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

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实现逆向登录的基本方法,以及如何应用相关的技术和库。

阅读剩余 67%

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

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

相关文章

  • python3 实现对图片进行局部切割的方法

    当我们希望对一张图片进行局部切割并处理时,使用Python3提供的Image库可以轻松实现。下面是实现该功能的完整攻略: 步骤1:导入必要的库 需要导入Python3中的Pillow库(也称为PIL,Python Imaging Library),并使用其中的Image库进行图片的处理。代码如下: from PIL import Image 步骤2:打开图片…

    python 2023年6月6日
    00
  • Python tkinter的grid布局及Text动态显示方法

    下面是Python tkinter的grid布局及Text动态显示方法的完整攻略: 一、grid布局 1. grid简介 grid()是Tkinter中最有用的布局管理器之一,它将窗口划分为一个网格,根据网格的行和列来放置小部件。这种方式可以让用户更加灵活地控制组件的位置和大小。 2. grid的基本使用方法 在Tkinter中,使用grid进行界面布局的基…

    python 2023年6月13日
    00
  • Python用一个公共列连接两个框架

    【问题标题】:Python join two frames with one common columnPython用一个公共列连接两个框架 【发布时间】:2023-04-05 03:26:01 【问题描述】: 我在 python 框架 A 中有 和框架 B: 如何在框架 A 中添加新列“名称”以显示框架 b 中的列 z 值?两个框架之间的公共列是A[‘b’…

    Python开发 2023年4月6日
    00
  • python定时任务timeloop库用法实例详解

    Python定时任务TimeLoop库用法实例详解 什么是Timeloop库 Timeloop是一个Python库,可以让你简化Python中的定时任务管理。通过Timeloop,你可以轻松地定期执行重复的任务,而无需编写复杂的调度逻辑。 安装Timeloop库 安装Timeloop库非常简单。只需在你的Python环境中运行以下命令即可: pip inst…

    python 2023年6月2日
    00
  • python编程进阶之异常处理用法实例分析

    Python编程进阶之异常处理用法实例分析 异常处理的作用和概念 在编程过程中,如果程序遇到了无法处理的错误,就会导致程序崩溃。为了防止这种情况发生,我们需要使用异常处理机制。异常处理就是在程序出现错误时,不直接崩溃,而是抛出一个异常,然后让我们自己定义处理这个异常的代码。这样就可以让我们更好地控制程序的运行,提高程序的稳定性和可靠性。 常见异常和处理方式 …

    python 2023年5月13日
    00
  • python爬虫使用scrapy注意事项

    Python爬虫使用Scrapy注意事项 Scrapy是一个强大的Python爬虫框架,它可以帮助我们快速、高效地爬取网站数据。在使用Scrapy时,我们需要注意以下几点: 1. 遵守网站的爬虫规则 在使用Scrapy爬取网站数据时,我们需要遵守网站的爬虫规则。一些网站可能会禁止爬虫访问,或者限制爬虫的访问频率。如果我们不遵守这些规则,可能会导致我们的爬虫被…

    python 2023年5月15日
    00
  • 如何用用Python将地址标记在地图上

    下面是一份详细的攻略,讲解如何使用 Python 将地址标记在地图上。 步骤一:准备工作 在进入代码编写之前,需要先进行准备工作。具体参考以下步骤: 安装所需的依赖库 在 Python 中,我们需要使用第三方的依赖库来完成将地址标记在地图上的功能。为此,我们需要下载并安装以下三个库: requests:用于获取经纬度信息 folium:主要是用来绘制地图 g…

    python 2023年5月20日
    00
  • python通过BF算法实现关键词匹配的方法

    以下是关于“Python通过BF算法实现关键词匹配的方法”的完整攻略: 简介 BF算法是一种简单的字符串匹配算法,它通过暴力枚举的方式在文本中查找关键词。本教程将介绍如何使用Python通过BF算法实现关键词匹配,并提供两个示例。 算法实现 BF算法是一种简单的字符串匹配算法,它通过暴力枚举的方式在文本中查找关键词。具体来说,我们将关键词从文本的第一个字符开…

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