一、腳本介紹
微信多開腳本是一種能夠在同一台電腦上同時運行多個微信賬號的技術,它涉及到了網路通信、進程式控制制、文件傳輸等多個方面。下面我們將從這些方面詳細介紹微信多開腳本的實現過程。
二、選取賬號
在實現微信多開之前,首先需要提供多個微信賬號,我們可以通過以下幾種方式獲取多個賬號:
1、註冊多個微信賬號
首先可以在微信客戶端里註冊多個賬號,每個賬號都可以使用手機號或郵箱進行註冊。
2、向親友借用
如果您的親友有多個微信賬號,那麼可以向他們借用。
3、網上購買
在網上可以購買多個微信賬號,但是需要注意,購買賬號沒有任何保障,而且容易遇到欺詐。
選取賬號後,需要將賬號信息存儲到一個文件或資料庫里,方便在程序中進行讀取和管理。
三、網路通信
微信多開腳本中涉及到了網路通信的問題,因為我們需要模擬多個微信客戶端進行登錄、消息發送等操作。在實現網路通信時,我們可以考慮以下幾種技術:
1、使用websocket
websocket是一種網路通信協議,可以實現雙向通信,因此可以模擬多個客戶端進行通信。在實現時,可以使用python里的websockets庫。
import asyncio import websockets async def hello(websocket, path): name = await websocket.recv() print(f" {greeting}") asyncio.get_event_loop().run_until_complete( websockets.serve(hello, 'localhost', 8765)) asyncio.get_event_loop().run_forever()
2、使用http協議
如果只需要進行查詢、發送消息等簡單操作,可以使用http協議模擬微信客戶端的web介面。在實現時,可以使用requests庫進行網路請求。
import requests def send_msg(account, message): url = f'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?pass_ticket={t}' data = { "BaseRequest": { "Uin": account["wxuin"], "Sid": account["wxsid"], "Skey": account["skey"], "DeviceID": "e123456789012345" }, "Msg": { "Type": 1, "Content": message, "FromUserName": account["username"], "ToUserName": "filehelper", "LocalID": "54" + str(int(time.time())), "ClientMsgId": "54" + str(int(time.time())) }, "Scene": 0 } headers = {"content-type": "application/json; charset=UTF-8"} r = requests.post(url, json=data, headers=headers) return r.json()
四、進程式控制制
在微信多開腳本中,為了不干擾到其他進程,需要控制每個微信進程的獨立性。在實現進程式控制制時,我們可以使用python的multiprocessing模塊實現進程的創建、啟動、停止等操作。具體實現方法如下:
import multiprocessing def worker(): # 進程執行的代碼 if __name__ == '__main__': process = multiprocessing.Process(target=worker) process.start() process.join()
五、文件傳輸
微信多開腳本中,需要對多個賬號進行文件傳輸,如圖片、視頻等。在實現文件傳輸時,可以通過以下幾種方式實現:
1、使用webrtc技術
在webrtc技術中,可以建立點對點的連接實現文件傳輸。在實現時,可以使用python里的webrtcvad庫。
import webrtcvad vad = webrtcvad.Vad(1) data = open('audio.raw', 'rb').read() frame_size = 960 frame_duration = 1000 * frame_size / (audio_sample_rate * 1) frames = [data[i:i+frame_size] for i in range(0, len(data), frame_size)] for i in range(len(frames)): is_voice = vad.is_speech(frames[i], sample_rate=audio_sample_rate) print('Frame %s is %sspeech' % (i, '' if is_voice else 'NOT '))
2、使用http或websocket發送文件
在http或websocket協議中,也可以發送文件。在實現時,可以將文件內容進行Base64編碼,然後在數據包中發送。
import base64 def send_file(account, filepath): with open(filepath, 'rb') as f: data = f.read() data_base64 = base64.b64encode(data).decode('utf-8') url = f'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsgimg?fun=async&f=json&pass_ticket={t}' headers = {'content-type': 'application/json; charset=UTF-8'} payload = { 'BaseRequest': { 'Uin': account['wxuin'], 'Sid': account['wxsid'], 'Skey': account['skey'], 'DeviceID': 'e123456789012345' }, 'Msg': { 'Type': 3, 'MediaId': '', 'Content': '', 'FromUserName': account['username'], 'ToUserName': 'filehelper', 'LocalID': '1497351293', 'ClientMsgId': '1497351293' }, 'Scene': '0' } payload['Msg']['Content'] = f'' r = requests.post(url, json=payload, headers=headers)
六、總結
微信多開腳本是一種涉及到網路通信、進程式控制制、文件傳輸等多個方面的技術,實現起來需要一定的技術和經驗。本文從多個方面介紹了微信多開腳本的實現過程,對於想要實現該技術的讀者來說,應該能夠提供一定的幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/283241.html