利用webqq协议使用python登录qq发消息源码参考

yizhihongxing

使用webqq协议可以通过Python代码登录QQ账号,并且发送消息,下面是实现这一功能的完整攻略。

环境搭建

在使用Python进行webqq协议操作之前,需要安装相关的Python库,比如requestsbeautifulsoup4,可以通过以下指令进行安装:

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并且发送消息的完整攻略如下:

  1. 根据环境搭建步骤,安装相关Python库。
  2. 在Python代码中填写我的QQ号码和密码,构造请求信息,并将请求信息通过POST请求发送给login_url
  3. 通过解析返回的响应信息中的URL跳转地址并进行访问,得到vfwebqq参数表示登录成功。
  4. 在Python代码中填写好友QQ号码和构造的r参数中的内容,将请求信息通过POST请求发送给send_msg_url
  5. 代码运行后,将会输出消息发送结果。

示例 2

假设我的QQ号码为10000,密码为123456,需要向好友200003000040000分别发送消息。使用Python代码登录QQ并且发送消息的完整攻略如下:

  1. 根据环境搭建步骤,安装相关Python库。
  2. 在Python代码中填写我的QQ号码和密码,构造请求信息,并将请求信息通过POST请求发送给login_url
  3. 通过解析返回的响应信息中的URL跳转地址并进行访问,得到vfwebqq参数表示登录成功。
  4. 在Python代码中循环填写好友QQ号码和构造的r参数中的内容,将请求信息通过POST请求发送给send_msg_url,并输出消息发送结果。
  5. 代码运行后,将会向三个好友分别发送消息,并输出消息发送结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用webqq协议使用python登录qq发消息源码参考 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python 检查文件mime类型的方法

    当我们需要确定一个文件的类型时,可以采用MIME类型来进行检查。MIME类型是一种由多用途互联网邮件扩展(MIME)引入的标准。它是一种用来标识文件格式的字符串,通常由文件的后缀名来确定。 在Python中,使用mimetypes模块可以进行MIME类型检查。下面是如何使用mimetypes进行文件MIME类型检查的完整攻略: 1. 导入mimetypes模…

    python 2023年5月20日
    00
  • 零基础也能看懂的python内置csv模块教程

    下面我将为您详细讲解“零基础也能看懂的python内置csv模块教程”的完整攻略。 标题1:什么是csv模块? CSV是指“Comma-separated values”(逗号分隔值)的缩写,是电子表格、数据库中常用的一种数据格式,其使用文本文件存储数据。Python内置的csv模块提供了读写CSV文件的功能,可轻松地操作CSV数据。 标题2:csv模块基本…

    python 2023年6月3日
    00
  • Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)

    在Python中,解析JSON数据时,可能会遇到“ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)”这个错误。这个错误通常是由于JSON数据格式不正确导致的。本文将详细讲解如何解决这个错误,包括两个示例。 什么是JSON? JSON(…

    python 2023年5月15日
    00
  • Python中处理unchecked未捕获异常实例

    处理未捕获异常的方式通常是使用 try-except 语句捕获异常,但有时可能会有一些未知或未知类型的异常,这时候就需要使用一些方法来处理未捕获的异常。Python 提供了一些内置的异常处理机制,如 sys.excepthook() 和 traceback 模块来处理 unchecked 未捕获异常实例。 使用 sys.excepthook() sys.ex…

    python 2023年5月13日
    00
  • Python远程方法调用实现过程解析

    要实现Python远程方法调用,通常有以下几个步骤: 定义RPC服务接口:在服务端,需要定义RPC服务接口,包括接口名称、方法列表、方法参数和返回值参数。RPC服务接口的定义可以使用Python自带的RPC框架XML-RPC、JSON-RPC、Pyro等。 实现RPC服务接口:在服务端,需要实现RPC服务接口,即实现RPC服务接口定义中的方法列表。 启动RP…

    python 2023年6月2日
    00
  • 使用python接入微信聊天机器人

    下面是使用Python接入微信聊天机器人的完整攻略。 1. 准备工作 在使用Python接入微信聊天机器人前,我们需要确保以下几点: 已安装Python,建议使用Python 3.x版本。 已安装itchat模块,itchat是一个开源的微信个人号接口,使用pip安装即可,命令如下: pip install itchat 已准备好微信个人号,可以在手机上登录…

    python 2023年5月23日
    00
  • Python中的Numeric包和Numarray包使用教程

    Python中的Numeric包和Numarray包使用教程 什么是Numeric和Numarray包 Numeric和Numarray都是Python中的数值计算库,它们可以让Python在数值计算上更加地高效和灵活。 在Python2.5之前,Python内置的数值计算库是Numeric。然而,随着科学计算的需求增长,Numeric已经不能够满足大规模计…

    python 2023年6月5日
    00
  • Python使用numpy模块实现矩阵和列表的连接操作方法

    Python使用numpy模块实现矩阵和列表的连接操作方法 在Python中,numpy是一个常用的数值计算库,它提供了高效的数组操作和数学函数。在数据处理和科学计算中,常需要对矩阵和列表进行连接操作。本攻略将介绍如何使用Python的numpy模块实现矩阵和列表的连接操作。我们将使用numpy模块中的concatenate()函数来实现这个操作。 连接矩阵…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部