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

使用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 requests模块session代码实例

    以下是关于Python requests模块session代码实例的攻略: Python requests模块session代码实例 在Python中,使用requests模块的session可以方便地管理HTTP会话。以下是Python requests模块session代码实例的攻略。 使用session发送HTTP请求 使用session发送HTTP请…

    python 2023年5月14日
    00
  • 浅析Python四种数据类型

    浅析Python四种数据类型 在Python中,常用的数据类型有四种,分别是数字、字符串、列表和元组。本篇文章将从各种数据类型的定义、特点、常见用途和代码示例等方面,对这四种数据类型进行简要分析和介绍。 数字 数字在Python中是一种基本的数据类型,用于表示数值。Python支持三种不同类型的数字:整数、浮点数和复数。 整数:由数字0-9组成,可以是正数、…

    python 2023年6月5日
    00
  • python 随机森林算法及其优化详解

    下面是详细讲解“Python随机森林算法及其优化详解”的完整攻略。 随机森林算法 随机森林是一种集成学习算法,是由多个决策树组成的。随机森林的基本思是通过对多个决策树的预测结果进行综合,来得到更加准确的预测结果。 随机森林算法的主要骤如下: 从原始数据集中随机选择一定数量的样本,建一个训练集。 随机选择一定数量特征,构建一个决树。 重复步骤1和步骤2,构建多…

    python 2023年5月14日
    00
  • 深入解析Python小白学习【操作列表】

    深入解析Python小白学习【操作列表】攻略 列表是Python中常用的数据类型之一,可以用来存储多个元素。本文将深入解Python小白学习【操作列表】的完整攻略,包括列表的定义、访问元素、切片、添加、删除、修改等操作。 列表的定义 列表是一种有序的可变序列可以存储任意类型的元素。列表的定义方式如下: lst = [element1, element2, .…

    python 2023年5月13日
    00
  • python Event事件、进程池与线程池、协程解析

    Python是一门多范式编程语言,支持面向对象、函数式,以及异步编程等多种编程风格。在Python中,事件、进程池、线程池、协程等技术都可以用来实现异步编程,提高程序的并发性能。 Python Event事件 什么是Python Event事件? Python Event事件是一种简单的同步原语,用于实现线程之间的通信,特别是在多线程程序中进行条件等待和通知…

    python 2023年5月19日
    00
  • python中实现修改图像分辨率大小

    下面我将详细讲解 python 中实现修改图像分辨率大小的完整攻略。主要分为两个步骤:读取并修改图像、保存修改后的图像。 读取并修改图像 要实现修改图像分辨率大小,我们需要先读取图像,然后进行修改。Python 中有很多图像处理库可以使用,比如 PIL(Pillow)、OpenCV、scikit-image 等。这里以 PIL(Pillow) 为例,介绍如何…

    python 2023年5月18日
    00
  • Python如何筛选序列中的元素的方法实现

    下面就来详细讲解一下“Python如何筛选序列中的元素的方法实现”的完整攻略。 问题定义 很多时候我们需要从序列中筛选出符合条件的元素,比如选出所有大于指定阈值的数据,或者选出其中的奇数等。Python中有很多种方法可以实现这个功能。 切片 切片是Python中非常常用且方便的筛选方法,它可以通过类似于 start:stop:step 的语法来选取序列中的元…

    python 2023年6月3日
    00
  • python导入火炬错误

    【问题标题】:python import torch errpython导入火炬错误 【发布时间】:2023-04-01 11:35:02 【问题描述】: python import torch err,通过pip安装的torch版本是1.7.0+cu110,我在这个问题上浪费了一天时间,有谁知道怎么解决,谢谢 C:\Users\xujimu\Desktop…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部