Python干货实战之逆向登录世界上最大的游戏平台Stream

yizhihongxing

Python干货实战之逆向登录世界上最大的游戏平台Stream

什么是逆向登录?

逆向登录是通过破解网站的登录机制,模拟网站的登录操作,从而实现程序的自动登录。

Stream游戏平台的登录机制

Stream平台的登录机制主要分为两个部分:一是获取登录表单,二是提交登录请求。

首先需要获取登录表单。通过浏览器的开发者工具可以发现,登录表单的URL为:https://auth.stream.qqmusic.qq.com/v1.1/login.php 。

然后需要提交登录请求。登录请求是通过POST方式提交的,请求数据包括:账号、密码等字段信息,其中需要对密码进行加密处理。

Python代码实现

下面是基于Python的实现过程:

1. 导入必要的库

import requests
import json
import time
import hashlib

2. 构建请求体

将账号与密码变量传入构造函数中,调用 build_login_params 方法获取完整的登录参数,请求体中需要传入账号、密码以及其他相关的参数,具体数据可以在浏览器开发者工具中查看。

class LoginStreamer():
    #初始化输入账号密码等数据
    def __init__(self, u, p):
        self.body = self.build_login_params(u, p)

    #构建POST登录请求的参数
    def build_login_params(self, u, p):
        currTime = str(int(round(time.time() * 1000)))
        clientIdentity = currTime + "".join(
            ['%s' %
             (hex(ord(c)).replace('0x', '').rjust(2, '0').upper())
             for c in 'hTdBd6j3GDVVmZnk'])
        password = bytes(p, encoding='utf-8')
        result = hashlib.md5(password).hexdigest().upper()
        md5pwd = hashlib.md5(bytes(result + clientIdentity,
                                   encoding='utf-8')).hexdigest().upper()
        bodyParams = {
            "client_plat": "1",
            "from_type": "0",
            "interfacever": "1.5.3.2413",
            "loginmode": "5",
            "password": md5pwd,
            "qq_access_token": "",
            "qq_app_key": "",
            "qq_i_openid": "",
            "qq_login_model": "0",
            "qq_openid": "",
            "qq_unionid": "",
            "qq_userinfo": "",
            "skey_expire": "0",
            "user_account": u,
            "verify_type": "1",
            "vfrom": "0"
        }
        return bodyParams

3. 发送POST请求

Stream的登录接口是通过POST方式提交的,使用requests库发送POST请求,并将返回的结果转换成json格式进行解析。

class LoginStreamer():
    #内部类,发送POST请求并携带登录数据进行请求登录
    class Login():
        def __init__(self, url):
            self.url = url
            self.headers = {
                "User-Agent":
                "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
                 Chrome/51.0.2704.63 Safari/537.36"
            }
            self.session = requests.session()

        def get_res(self, body):
            try:
                res = self.session.post(
                    self.url, data=json.dumps(body), headers=self.headers)
                res.encoding = 'utf-8'
                return res
            except Exception as e:
                print("[Error]:", e)
                raise e

    #登录主函数
    def login(self):
        loginUrl = "https://auth.stream.qqmusic.qq.com/v1.1/login.php"
        loginObj = self.Login(loginUrl)
        res = loginObj.get_res(self.body)
        jsonRes = json.loads(res.text)
        if jsonRes['code'] == 0:
            print("[Success]: Login successfully!")
            return True
        else:
            print("[Failed]: Login failed!")
            print("[Error]:", jsonRes)
            return False

4. 示例说明

下面是两个示例,一个是使用本地文本文件保存账号和密码,另一个是手动输入账号和密码。

示例一:使用本地文本文件保存账号和密码

# 从本地文件中读取账号和密码
with open("login.txt", "r") as f:
    u, p = f.readlines()

# 调用登录函数进行登录
loginstreamer = LoginStreamer(u.strip(), p.strip())
login = loginstreamer.login()

示例二:手动输入账号和密码

# 输入账号和密码,并调用登录函数进行登录
username = input("请输入账号:")
password = input("请输入密码:")

loginstreamer = LoginStreamer(username, password)
login = loginstreamer.login()

总结

逆向登录是一项比较复杂的技术,需要对网站的登录机制有深刻的了解和掌握。通过本文的例子,读者可以学会如何使用Python实现逆向登录的基本方法,以及如何应用相关的技术和库。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python干货实战之逆向登录世界上最大的游戏平台Stream - Python技术站

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

相关文章

  • PyQt5实现简易电子词典

    下面我将详细讲解如何使用PyQt5实现一个简单的电子词典。 环境要求 Python3 PyQt5 Qt Designer 工具准备 首先我们需要安装PyQt5库,可以使用pip命令进行安装: pip install PyQt5 另外还需要安装Qt Designer,安装方式可以参考Qt官网文档。 构建UI界面 可以使用Qt Designer创建电子词典的UI…

    python 2023年5月13日
    00
  • 使用Python进行防病毒免杀解析

    使用Python进行防病毒免杀解析可以帮助我们破解一些常见的病毒防护机制,让我们更好地分析病毒性质和行为。下面是完整攻略步骤: 1. 首先需要理解病毒防护机制 在进行防病毒免杀解析之前,我们需要对病毒防护机制有所了解。常见的病毒防护机制包括文件加壳、API hook和进程注入等,我们需要分析病毒的cracking行为和相关机制。 2. 使用Python进行病…

    python 2023年6月3日
    00
  • python操作excel让工作自动化

    下面我将为你讲解“Python操作Excel让工作自动化”的完整攻略。 1. Excel是什么? Excel是微软的一款电子表格软件,广泛用于数据处理、统计分析、报表生成等场景,深受各行各业的喜爱。Excel支持多种数据格式,能够方便地进行数据输入、筛选、排序、图表制作等操作。在日常工作中,使用Excel处理数据、制作报表已经成为许多人的必修技能。 2. P…

    python 2023年6月5日
    00
  • python用folium绘制地图并设置弹窗效果

    下面我将详细讲解“Python用Folium绘制地图并设置弹窗效果”的完整攻略分为以下几个步骤: 安装Folium 导入所需库和数据 创建最基础地图 在地图上添加标记 设置弹窗效果 接下来,我们会对每个步骤进行详细的说明,并且给出至少两个样例,以便更好地理解。 1. 安装Folium Folium是基于Python的数据可视化库,用于绘制交互式地图。安装方法…

    python 2023年6月13日
    00
  • 利用pip安装python第三方库的4种方法

    下面是“利用pip安装python第三方库的4种方法”的详细攻略: 方法一:直接使用pip安装 使用pip安装第三方库是最常用的方法,只需要在命令行输入以下命令即可: pip install package_name 其中,package_name是要安装的第三方库的名称。例如,我们要安装常用第三方库numpy,可以执行以下命令: pip install n…

    python 2023年5月14日
    00
  • 在python中利用dict转json按输入顺序输出内容方式

    在Python中,我们可以使用dict将数据格式转换成JSON格式,方便在不同的系统之间进行数据传输。 默认情况下,Python中的dict对象转换成JSON格式后,输出的顺序是无序的。但是有些情况下,我们需要按照指定的顺序输出JSON内容,这时可以使用collections.OrderedDict和json.dumps中的sort_keys参数。 具体操作…

    python 2023年5月13日
    00
  • python用什么编辑器进行项目开发

    以下是详细讲解“Python用什么编辑器进行项目开发”的完整攻略。 1. 选择编辑器的考虑因素 选择Python编辑器时需要考虑以下因素: 功能:编辑应该具有基本的代码编辑、调试、自动补全、语法高亮等功能同时还应该支持插件和扩展,以满足不同的开发需求。 易用性:编辑器应该易于安装、配置和使用,同时还应该具有友好的用户界面和文档。 性能:编辑器应该具有快速的应…

    python 2023年5月14日
    00
  • 详解Python中DOM方法的动态性

    给出“详解Python中DOM方法的动态性”的攻略如下: 1. 什么是DOM? DOM(Document Object Model)是一种文档对象模型,它是一种以树形结构作为基础的文档表示方法,可以用JavaScript或Python等编程语言来操作HTML或XML文档的内容和结构。 2. 动态性的含义 在Python中,DOM方法是动态的,这意味着当我们对…

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