📅  最后修改于: 2023-12-03 15:38:44.514000             🧑  作者: Mango
WhatsApp 是目前最流行的即时通讯工具之一,但是在使用 WhatsApp 发送消息时,必须要将对方的号码保存在通讯录中才可以发送消息。那么,如果想要发送消息给一个未保存的号码,该怎么办呢?
我们可以通过使用 WhatsApp 的 API 来实现将消息发送给未保存的号码。这里我们介绍一种基于 yowsup 库的方法,让我们一步步来实现。
yowsup 是一个 Python 库,需要通过 pip 进行安装:
pip install yowsup2
我们需要从手机中获取自己的号码和密码,以在 Python 中通过 yowsup 登录 WhatsApp。为了实现这一点,我们需要在手机上进行如下设置:
# 导入所需模块
from yowsup.layers.auth import YowAuthenticationProtocolLayer, AuthError
from yowsup.layers.coder import YowCoderLayer
from yowsup.layers.network import YowNetworkLayer, ProtocolEntityCallback
from yowsup.stacks import YowStack
from yowsup.common import YowConstants
# 自己的 WhatsApp 号码和密码
phoneNumber = "xxxxxxxxxxx"
password = "xxxxxxxxxxxx"
# 发送的消息和目标号码
message = "Hello from yowsup!"
targetPhone = "xxxxxxxxxxx"
# 登录
class AuthLayer(YowAuthenticationProtocolLayer):
def __init__(self):
super(AuthLayer, self).__init__()
def onAuthSuccess(self, username):
self.entity.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT))
def onAuthFailed(self, username, err):
print("登录失败. Error: %s" % err)
self.stack.broadcastEvent(YowExitEvent())
def onDisconnected(self, reason):
print("断开连接. Reason: %s" % reason)
self.stack.broadcastEvent(YowExitEvent())
@ProtocolEntityCallback("success")
def onSuccess(self, successProtocolEntity):
print("登录成功.")
stack = YowStack([
AuthLayer(),
YowCoderLayer(),
YowNetworkLayer()
])
stack.setProp(YowAuthenticationProtocolLayer.PROP_PASSIVE, True)
stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, (phoneNumber, password))
stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0])
stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN)
stack.setProp(YowCoderLayer.PROP_RESOURCE, YowConstants.RESOURCE)
stack.loop(timeout=0.5)
# 发送消息
from yowsup.layers.protocol_messages.protocolentities import TextMessageProtocolEntity
messageEntity = TextMessageProtocolEntity(message.encode("utf-8"), to=targetPhone)
stack.broadcast(messageEntity)
print("消息已发送.")
stack.disconnect()
上述代码实现了登录并发送指定消息给指定号码的功能。如果想要发送图片、视频等其他类型的文件,可以修改对应的协议实体即可。
通过上述步骤,我们成功地将 WhatsApp 消息发送到了未保存的号码。请注意,使用 WhatsApp 的 API 发送消息可能会违反 WhatsApp 的使用条款,应慎重使用。