📜  如何将 WhatsApp 消息发送到未保存的号码?(1)

📅  最后修改于: 2023-12-03 15:38:44.514000             🧑  作者: Mango

如何将 WhatsApp 消息发送到未保存的号码?

WhatsApp 是目前最流行的即时通讯工具之一,但是在使用 WhatsApp 发送消息时,必须要将对方的号码保存在通讯录中才可以发送消息。那么,如果想要发送消息给一个未保存的号码,该怎么办呢?

解决方案

我们可以通过使用 WhatsApp 的 API 来实现将消息发送给未保存的号码。这里我们介绍一种基于 yowsup 库的方法,让我们一步步来实现。

步骤一:安装依赖库

yowsup 是一个 Python 库,需要通过 pip 进行安装:

pip install yowsup2
步骤二:获取手机号码和密码

我们需要从手机中获取自己的号码和密码,以在 Python 中通过 yowsup 登录 WhatsApp。为了实现这一点,我们需要在手机上进行如下设置:

  1. 安装 WhatsApp;
  2. 打开 WhatsApp,并进入“设置”;
  3. 点击“账户”-“二步验证”-“启用”;
  4. 设置一个安全密码,并保持这个密码不要丢失;
  5. 进入“高级”-“备份”-“立即备份”-“备份到 Google Drive”;
  6. 点击“恢复”以确保你的 WhatsApp 帐户被激活并设置了 Google Drive 备份。
步骤三:登录并发送消息
# 导入所需模块
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 的使用条款,应慎重使用。