使用webqq协议可以通过Python代码登录QQ账号,并且发送消息,下面是实现这一功能的完整攻略。
环境搭建
在使用Python进行webqq协议操作之前,需要安装相关的Python库,比如requests
和beautifulsoup4
,可以通过以下指令进行安装:
pip install requests beautifulsoup4
登录QQ
使用Python实现webqq登录QQ账号的代码如下:
import requests
from bs4 import BeautifulSoup
# 登录URL
login_url = 'http://ui.ptlogin2.qq.com/cgi-bin/login'
# 构造请求信息
params = {
'appid': '501004106',
's_url': 'http://web2.qq.com/loginproxy.html',
'js_ver': 10194,
'js_type': 1,
'login_sig': '',
'u1': 'http://web2.qq.com/loginproxy.html?login2qq=1&webqq_type=10',
'r': '0.36961590843302' # 随机数
}
data = {
'u': 'QQ号码',
'p': 'QQ密码',
'verifycode': '',
'webqq_type': 10,
'remember_uin': 1,
'login2qq': 1,
'aid': '501004106',
'u1': 'http://web2.qq.com/loginproxy.html?login2qq=1&webqq_type=10',
'h': 1,
'ptredirect': 0,
'ptlang': 2052,
'daid': 164,
'from_ui': 1,
'pttype': 1,
'dumy': ''
}
# 发送POST请求
session = requests.Session()
response = session.post(login_url, params=params, data=data, allow_redirects=False)
# 解析返回的响应信息中的URL跳转地址并进行访问
if response.status_code == 302:
redirect_url = response.headers['Location']
session.get(redirect_url, allow_redirects=False)
response = session.get('http://d.web2.qq.com/channel/login2')
soup = BeautifulSoup(response.text, 'html.parser')
vfwebqq = soup.find('vfwebqq').text
print('登录成功,vfwebqq:', vfwebqq)
else:
print('登录失败')
代码中的login_url
是登录QQ的URL,params
中是一些参数信息,data
中则是账号和密码等信息。将参数通过POST请求发送给login_url
后,获取返回的响应信息中的URL跳转地址,并进行访问。最终可以通过分析返回的响应信息得到vfwebqq
参数,并输出vfwebqq
参数表示登录成功。
发送消息
登录成功后,可以通过webqq协议发送消息。使用Python实现webqq发送消息的代码如下:
import time
import requests
from bs4 import BeautifulSoup
# 发送信息URL
send_msg_url = 'http://d.web2.qq.com/channel/send_buddy_msg2'
# 好友QQ号码
friend_qq = '好友QQ号码'
# 构造请求信息
msg_id = int(time.time() * 1000) % 1000000
data = {
'r': '{"to":' + friend_qq + ',"content":"[{\\"type\\":\\"font\\",\\"size\\":10,\\"color\\":\\"000000\\",\\"name\\":\\"宋体\\",\\"style\\":[0,0,0],\\"text\\":\\"hello world\\"}]","face":564,"clientid":"53999199","msg_id":' + str(msg_id) + ',"psessionid":"' + psessionid + '"}'
}
# 发送POST请求
session = requests.Session()
response = session.post(send_msg_url, data=data)
if response.status_code == 200:
print('消息发送成功')
else:
print('消息发送失败')
在发送消息代码中,需要填写好友QQ号码和构造的请求信息。最重要的是构造r
参数中的内容,包括消息的类型、大小、颜色、字体、内容等相关信息。该代码会输出消息发送结果。
示例说明
以下是两个示例说明:
示例 1
假设我的QQ号码为10000
,密码为123456
,需要向好友20000
发送消息。使用Python代码登录QQ并且发送消息的完整攻略如下:
- 根据环境搭建步骤,安装相关Python库。
- 在Python代码中填写我的QQ号码和密码,构造请求信息,并将请求信息通过POST请求发送给
login_url
。 - 通过解析返回的响应信息中的URL跳转地址并进行访问,得到
vfwebqq
参数表示登录成功。 - 在Python代码中填写好友QQ号码和构造的
r
参数中的内容,将请求信息通过POST请求发送给send_msg_url
。 - 代码运行后,将会输出消息发送结果。
示例 2
假设我的QQ号码为10000
,密码为123456
,需要向好友20000
、30000
、40000
分别发送消息。使用Python代码登录QQ并且发送消息的完整攻略如下:
- 根据环境搭建步骤,安装相关Python库。
- 在Python代码中填写我的QQ号码和密码,构造请求信息,并将请求信息通过POST请求发送给
login_url
。 - 通过解析返回的响应信息中的URL跳转地址并进行访问,得到
vfwebqq
参数表示登录成功。 - 在Python代码中循环填写好友QQ号码和构造的
r
参数中的内容,将请求信息通过POST请求发送给send_msg_url
,并输出消息发送结果。 - 代码运行后,将会向三个好友分别发送消息,并输出消息发送结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用webqq协议使用python登录qq发消息源码参考 - Python技术站