用python代码扫码登陆QQ空间获取Cookie值,QQ登陆协议,python模拟登陆QQ

Lan
Lan
2020-06-02 / 7 评论 / 2,700 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年07月01日,已超过1196天没有更新,若内容或图片失效,请留言反馈。

前几天研究了下QQ群的几个接口,但是最后面都需要手动输入Cookie才可以运行,然后今天又研究了一下QQ空间的登陆接口,然后就有了下面这些代码,最终的返回值是登录成功的Cookie值。需要手动打开目录下的qrcode.png然后进行扫码。
Test

import re
import time
from random import random

import requests


def hash33(t):
    e = 0
 for i in range(len(t)):
        e += (e << 5) + ord(t[i])
    return 2147483647 & e


def login():
    ss = requests.session()
    url = 'https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=3&d=72&v=4&t=' + str(
        '0.' + str(int(random() * 10000000000000000)))
    response = ss.get(url=url)
    with open('qrcode.png', 'wb') as f:
        f.write(response.content)
    cookie = response.cookies
    headers = requests.utils.dict_from_cookiejar(cookie)
    print(headers)
    while True:
        url = f'https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html' 
              f'%3Fpara%3Dizone%26from%3Diqq&ptqr' 
              f'token={hash33(headers["qrsig"])}&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0' 
              f'-1542784335061&js_ver=10289&js_type=1&login_sig=hn6ZiMZRPT8LWFsFG3MrScznzLVrdbwS9EIo-ihAmeD' 
              f'*YmOfqP3uoI6JytVVQYw2&pt_uistyle=40&aid=549000912&daid=5& '
 html = ss.get(url=url, headers=headers)
        type = re.findall('[u4e00-u9fa5]+', html.text)[0]
        if type == '二维码未失效':
            print(type)
        elif type == '二维码认证中':
            print(type)
        elif type == '登录成功':
            print(type)
            return html.cookies
        else:
            print("二维码已失效,请重新扫码!")
            login()
        time.sleep(2)


if __name__ == '__main__':
    print(login())
0

评论 (7)

取消
  1. 头像
    毛源 作者
    Windows 10 · Google Chrome

    大佬能说一下原理么,我想用java实现一下,可以的话加我QQ,邮箱就是

    回复
  2. 头像
    毛源 作者
    Windows 10 · Google Chrome

    111

    回复
  3. 头像
    Lan 作者
    Windows 10 · Google Chrome
    @ 访客

    就是模拟网络请求

    回复
  4. 头像
    Lan 作者
    Windows 10 · Google Chrome
    @ 访客

    我没有了解过java这方面的

    回复
  5. 头像
    毛源 作者
    Windows 10 · Google Chrome
    @ 访客

    我用java也实现了一下,但是获取的cookie并不是我想要的,只拿到了skey,你有没有对这个深究?

    回复
  6. 头像
    Lan 作者
    Android · Google Chrome
    @ 访客

    哈哈,不好意思,很久没弄这个啦,可能有些变化吧

    回复
    1. 头像
      草草
      Windows 10 · Google Chrome
      @ Lan

      失效了,兄弟

      回复