在github
中有基于web
版的微信實現的實時收發(fā)消息api
,python
調用起來非常簡單。但是目前來說,大部分的用戶沒法登錄web
版的微信,因此也就沒法使用。
今天我們介紹基于windows
版的微信,實現實時收發(fā)信息。本文站在巨人的肩膀上,基于第三方提供的庫,實現自動聊天機器人。效果如下:
1 微信實時收發(fā)消息
1.1 第三方庫
基于第三方pc-wechat-hook-http-api實現微信實時收發(fā)消息。
需要注意的是,此庫基于3.6.0.18
版本微信。下載對應版本微信后,直接覆蓋安裝,這樣可以保留聊天記錄。
如果找不到對應版本的微信,可以直接到文末獲取相關連接。
1.2 開啟注入dll
想要實時獲取微信消息,需要劫持響應的入口。這一部分內容我們無需過多關心技術細節(jié),只需傻瓜式點擊一下即可。
從pc-wechat-hook-http-api官方地址下載到如下三個文件。
如果
pc-wechat-hook-http-api
地址失效,讀者可以直接到文末獲取相關dll下載資源。
將HPSocket4C.dll
文件復制到微信目錄下(例如E:\Tencent\WeChat\[3.6.0.18]
)
點擊Daen注入器.exe
文件:
其中:
- 文件目錄是指微信安裝路徑,參考上圖。
DLL
路徑指的是DaenWxHook.dll
文件的完整路徑。- 進程參數直接使用默認即可。其中圖中8089指本地用于接收微信實時消息的
http server
端口。8055
指的是dll
開啟的http server
端口,發(fā)送消息時只需往這個端口post
數據即可。
點擊注入并啟動,登錄微信即可。
1.3 實時收發(fā)消息
實時收發(fā)消息官方文檔:https://www.apifox.cn/apidoc/project-1222856/doc-1012539
1.3.1 接收微信消息
對于實時接收消息,簡單來說,就是在本地創(chuàng)建一個http server
,端口與進程參數一致,即默認地址為:http://localhost:8089/wechat/
。我們通過使用flask
庫創(chuàng)建http server
from flask import Flask, request
import json
import requests
app = Flask(__name__)
def on_rcv_chatroom_msg(from_wxid, msg):
print("收到群消息")
def on_rcv_p2p_txt(from_wxid, msg_txt):
print("收到文本消息", from_wxid, msg_txt)
@app.route('/wechat/', methods=['get', 'post'])
def wechat():
data = request.stream.read()
data = data.decode('utf-8')
data = json.loads(data)
type = data['type']
if type == 'D0003':
data = data['data']
msg = data['msg']
from_wxid = data['fromWxid']
if "@chatroom" in from_wxid:
on_rcv_chatroom_msg(from_wxid, msg)
else:
on_rcv_p2p_txt(from_wxid, msg)
return ''
if __name__ == '__main__':
app.run(debug=True, port=8089)
1.3.2 發(fā)送微信消息
對于發(fā)送消息來說,往指定的端口(默認8055)post消息即可:
import json
import requests
def send_msg(wxid, is_img, msg):
if is_img:
payload = {"type": "Q0010", "data": {"wxid": wxid, "path": msg}}
else:
payload = {"type": "Q0001", "data": {"wxid": wxid, "msg": msg}}
headers = {
'User-Agent': 'apifox/1.0.0 (https://www.apifox.cn)',
'Content-Type': 'application/json'
}
# 請求url
url = 'http://127.0.0.1:8055/DaenWxHook/client/'
# 請求參數
# 調用post
response = requests.post(url, json=payload,
headers=headers) # response 響應對象
# 獲取響應狀態(tài)碼
print('狀態(tài)碼:', response.status_code)
# 獲取響應頭
print('響應頭信息:', response.headers)
# 獲取響應正文
print('響應正文:', response.text)
def send_txt_msg(wxid, txt):
send_msg(wxid, False, txt)
def send_img_msg(wxid, img_path):
send_msg(wxid, True, img_path)
如上,分別實現了發(fā)送文本消息與圖片消息函數。文章來源:http://www.zghlxwxcb.cn/news/detail-416122.html
2 自動聊天機器人
聊天機器人我們同樣站在巨人肩膀上,使用青云客提供的api,實現自動對話。需要注意的是,青云客的機器人是女性,且名稱為菲菲
,如果想自定義名稱,我們直接將回復的文本中的菲菲
替換成自定義的名稱即可,實現代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-416122.html
def talk_with_robot(msg, robot_name=None):
url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg))
html = requests.get(url)
rt = html.json()["content"]
rt = rt.replace("{br}","\n")
if robot_name is not None:
rt = rt.replace("菲菲", robot_name)
return rt
3 資源獲取
- 【
3.6.0.18
版微信安裝包】 關注公眾號:Python學習實戰(zhàn)
,回復:36018
- 【Daen注入器相關dll文件】 關注公眾號:
Python學習實戰(zhàn)
,回復:daen
- 【完整源碼獲取】關注公眾號:
Python學習實戰(zhàn)
,回復:robot
到了這里,關于Python基于PC版微信實現機器人的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!