carlosio / whatsapp
用于发送 WhatsApp 消息的 PHP 库
Requires
- symfony/console: 2.1.*
This package is auto-updated.
Last update: 2024-09-22 04:12:47 UTC
README
### 2019年9月29日备注
开发将恢复,让我们假装什么都没发生过。
有关最近的变化,请参阅 变更日志
WhatsAPI
WhatsApp 消息的接口
什么是 WhatsApp?
根据 公司
“WhatsApp 消息是跨平台的移动消息应用,取代了 SMS,并通过设备的现有互联网数据计划运行。WhatsApp 可用于 iPhone、BlackBerry、Android、Windows Phone、Nokia Symbian60 & S40 手机。因为 WhatsApp 消息使用与您用于电子邮件和网页浏览相同的互联网数据计划,所以发送消息和与朋友保持联系无需付费。”
2011 年后期数据:每天 10 亿条消息,约 2,000 万用户。
修改后的 XMPP
WhatsApp 使用某种定制的 XMPP 服务器,内部称为 FunXMPP,这基本上是某种扩展的专有版本。
登录流程
与 XMPP 类似,WhatsApp 使用 JID(Jabber ID)和密码成功登录服务。密码是哈希过的,碰巧是手机的 IMEI(国际移动设备身份码)或等效的唯一 ID 的反转版本,存储在创建账户的服务器上,并在每次客户端连接服务器时透明地使用。
JID 是您国家代码和手机号码的连接。
初始登录使用摘要访问认证。
消息发送
消息基本上以 TCP 数据包的形式发送,遵循 WhatsApp 自定义的格式(与 XMPP RFCs 中定义的不同)。
尽管使用了类似 SSL 的通信,但消息是以明文格式发送的。
多媒体消息发送
与 WhatsApp 联系人共享的图片、视频和音频文件在发送给接收者之前被 HTTP 上传到服务器,同时附带媒体文件的 Base64 缩略图(如有适用)以及生成的 HTTP 链接作为消息正文。
常见问题解答
-
代码中为什么到处都是十六进制字符?
主要是 WhatsApp 的专有控制字符/命令,或者根据服务器规范格式化的数据,存储在客户端的预定义字典中。
-
你的未来开发计划是什么?
我们没有任何计划。
-
它能在网页上运行吗?
我们已经在 Tornado Web Server 之上测试了一个略微修改的版本,运行得很好,但是构建一个聊天客户端有点棘手,请做些研究。
-
我能接收聊天吗?
当然,使用相同的套接字接收机制。但您必须解析传入的数据。解析函数不包括在本发行版中,可能在下一个版本中?
-
我觉得代码很混乱。
它正在工作。
-
我怎样才能获得我的密码?
这取决于您的平台,例如,在 Android 上,您可以使用 TelephonyManager
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.getDeviceId();
当然,有足够的权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
密码概述
- Android:反转 IMEI 的 MD5 哈希(来源:WhatsAPI 原始作者)
- iOS:MAC 地址重复两次的 MD5 哈希(来源:Ezio Amodio)
- Windows Phone:DeviceUniqueId的反向MD5哈希值(来源:Robe Fernández)
应用
- WhatsAppify(截至2012年11月为封闭测试版。仅向Telepienso客户发送WhatsApp消息,当其包裹分配了跟踪号时。)
注意事项
-
这个概念证明可以扩展,包含所有使客户端完整的功能,类似于官方客户端,实际上可能更好。
-
在分析服务机制的两周内,我们发现了一些严重的设计和安全缺陷(他们自2011年以来修复了一些)。对于一个拥有如此庞大用户基的公司,我们期望更好的实践和工程。
-
PHP和JAVA端口完全工作。
许可证
MIT - 参考源代码获取额外行。
毒蛇
巴林开发者团队。
Ahmed Moh'd(fb.com/ahmed.mhd)和Ali Hubail(@hubail)为这次发布做出了贡献。