原神抢码,米游社抢码-首发

本文章仅供学习使用-侵权请联系删除_2023年3月14日08:17:06

本来在深渊12层打不过的我偶然在刷到了一个dy的直播间,看到主播在抢码上号帮忙打深渊还号称痛苦号打不满不送原石的旗号我就决定扫码试试,在直播间内使用了两部手机互相扫码在扫了一下午的码后发现根本抢不到二维码心态崩溃后我就想着写一个脚本来帮我抢码(本人py小白),终于在又白忙活了一下的后终于决定抱着学习的态度写一个程序来帮我进行抢码的操作!

原理讲解

  1. 进行屏幕区域的截图(用来获取二维码)

  1. 将获取到的二维码进行解析

  1. 将解析后的内容截取出ticket

  1. 最后发送给米哈游的服务器

在抢码登陆中一共分为两步

第一步抢码

第二步登陆

哈哈听起来像废话,我们首先会进行二维码扫码的认主,先确定这个二维码的主人是谁只要确认好这个主人后就算等待几分钟再确认登陆也没有问题。

# 抢码开始
def Request(ticket):conn = http.client.HTTPSConnection("api-sdk.mihoyo.com")payload = json.dumps({"app_id": 4,"device": "","ticket": ticket})headers = {}conn.request("POST", "/hk4e_cn/combo/panda/qrcode/scan", payload, headers)res = conn.getresponse()data = res.read()data = json.loads(data.decode("utf-8"))retcode = data["retcode"]return retcode

我们先进行二维码的认主 ticket这个参数为二维码解析后的参数自行获取

# 确认登陆
def ConfirmRequest(ticket):conn = http.client.HTTPSConnection("api-takumi.miyoushe.com")payload = ''headers = {'DS': '','cookie': '','x-rpc-client_type': '','x-rpc-app_version': '','x-rpc-sys_version': '','x-rpc-channel': '','x-rpc-device_id': '','x-rpc-device_fp': '','x-rpc-device_name': '','x-rpc-device_model': '','Referer': ' https://app.mihoyo.co'}conn.request("GET", "/auth/api/getGameToken?uid=0000000",payload, headers)res = conn.getresponse()data = res.read()# print(data.decode("utf-8"))data = json.loads(data.decode("utf-8"))token = data["data"]["game_token"]conn = http.client.HTTPSConnection("api-sdk.mihoyo.com")payload = json.dumps({"app_id": 4,"device": "","payload": {"proto": "Account","raw": f"{{\"uid\":\"0000000\",\"token\":\"{token}\"}}"},"ticket": ticket})headers = {'DS': '','cookie': '','x-rpc-client_type': '','x-rpc-app_version': '','x-rpc-sys_version': '','x-rpc-channel': 'xiaomi','x-rpc-device_id': '','x-rpc-device_fp': '','x-rpc-device_name': '','x-rpc-device_model': '','Referer': ' https://app.mihoyo.com','Content-Type': 'application/json'}conn.request("POST", "/hk4e_cn/combo/panda/qrcode/confirm",payload, headers)res = conn.getresponse()

然后再进行二维码的确认来进行游戏内的确认登陆

启动后会在 屏幕中间显示一个300x300像素的框放入二维码后直接扫码登陆

由于自己学习就不做成品和优化了

好了废话不多说了这里只提供思路参数在米游社扫码时抓包即可获取,有需要的自行阅读吧

import cv2
from pyzbar.pyzbar import decode
import pyzbar.pyzbar as pyzbar
import numpy as np
from PIL import ImageGrab
import time
import tkinter as tk
import threading
import re
import http.client
import json# 显示框框 启动线程def my_function():import juxingmy_thread = threading.Thread(target=my_function)
my_thread.start()# 获取坐标
root = tk.Tk()
win_width = 300
win_height = 300
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x_pos = (screen_width // 2) - (win_width // 2)
y_pos = (screen_height // 2) - (win_height // 2)# 设置扫描区域左上角的坐标和宽高
left, top, width, height = x_pos, y_pos, win_width, win_height
right = left + width
bottom = top + height# 创建窗口并设置窗口名称
cv2.namedWindow("QR Code Scanner", cv2.WINDOW_NORMAL)
cv2.resizeWindow("QR Code Scanner", win_width, win_height)# 抢码开始
def Request(ticket):conn = http.client.HTTPSConnection("api-sdk.mihoyo.com")payload = json.dumps({"app_id": 4,"device": "","ticket": ticket})headers = {}conn.request("POST", "/hk4e_cn/combo/panda/qrcode/scan", payload, headers)res = conn.getresponse()data = res.read()data = json.loads(data.decode("utf-8"))retcode = data["retcode"]return retcode# 确认登陆
def ConfirmRequest(ticket):conn = http.client.HTTPSConnection("api-takumi.miyoushe.com")payload = ''headers = {'DS': '','cookie': '','x-rpc-client_type': '2','x-rpc-app_version': '2.46.1','x-rpc-sys_version': '9','x-rpc-channel': '','x-rpc-device_id': '','x-rpc-device_fp': '','x-rpc-device_name': '','x-rpc-device_model': '','Referer': ' https://app.mihoyo.co'}conn.request("GET", "/auth/api/getGameToken?uid=0000000",payload, headers)res = conn.getresponse()data = res.read()# print(data.decode("utf-8"))data = json.loads(data.decode("utf-8"))token = data["data"]["game_token"]conn = http.client.HTTPSConnection("api-sdk.mihoyo.com")payload = json.dumps({"app_id": 4,"device": "","payload": {"proto": "Account","raw": f"{{\"uid\":\"0000000\",\"token\":\"{token}\"}}"},"ticket": ticket})headers = {'DS': '','cookie': '','x-rpc-client_type': '2','x-rpc-app_version': '2.46.1','x-rpc-sys_version': '9','x-rpc-channel': ' xiaomi','x-rpc-device_id': '','x-rpc-device_fp': '','x-rpc-device_name': '','x-rpc-device_model': '','Referer': ' https://app.mihoyo.com','Content-Type': 'application/json'}conn.request("POST", "/hk4e_cn/combo/panda/qrcode/confirm",payload, headers)res = conn.getresponse()# data = res.read()# print(data.decode("utf-8"))while True:# 截取指定区域的屏幕截图screenshot = cv2.cvtColor(np.array(ImageGrab.grab(bbox=(left, top, right, bottom))),cv2.COLOR_BGR2RGB)# 将截图转换为灰度图像gray = cv2.cvtColor(screenshot, cv2.COLOR_RGB2GRAY)# 尝试使用pyzbar库识别二维码codes = decode(gray, symbols=[pyzbar.ZBarSymbol.QRCODE])# 如果找到了二维码,输出其内容if codes:print(codes[0].data.decode())pattern = r"ticket=([a-f0-9]+)"match = re.search(pattern, codes[0].data.decode())# 正则请求地址if match:start_time = time.time()# 进入抢码retcode = Request(match.group(1))end_time = time.time()if retcode == 0:# 计算代码执行时间elapsed_time = end_time - start_time#  输出执行时间print("抢码成功耗时 %.3f 秒" % elapsed_time)# 确认登陆ConfirmRequest(match.group(1))time.sleep(1)# 等待一段时间再继续扫描time.sleep(0.05)# 在窗口中显示截图cv2.imshow("QR Code Scanner", screenshot)# 检查是否按下了键盘上的任意键if cv2.waitKey(1) != -1:break
# 关闭窗口
cv2.destroyAllWindows()

下面是显示框部分的代码

import tkinter as tk# 创建一个Tkinter窗口
root = tk.Tk()# 隐藏窗口标题栏和边框
root.overrideredirect(True)# 将窗口置顶
root.wm_attributes("-topmost", True)# 设置窗口大小和位置
win_width = 300
win_height = 300
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x_pos = (screen_width // 2) - (win_width // 2)
y_pos = (screen_height // 2) - (win_height // 2)
root.geometry('{}x{}+{}+{}'.format(win_width, win_height, x_pos, y_pos))# 将窗口背景设为透明
root.attributes('-transparentcolor', 'white')# 将窗口的画布设为透明
canvas = tk.Canvas(root, bg='white', highlightthickness=0)
canvas.pack(fill='both', expand=True)# 绘制一个绿色空心正方形
canvas.create_rectangle(5, 5, win_width-5, win_height-5, outline='red', width=2)# 进入循环让窗口保持打开状态
root.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶技术详解

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:自动驾驶技术 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 目录 一 自动驾驶视觉感知算法 1目标检测 1.1 两阶…

代码随想录算法训练营第四五天 | dp[j] = min(dp[j], dp[j - coins[i]] + 1)

目录 爬楼梯 (进阶)零钱兑换完全平方数总结 LeetCode 70. 爬楼梯 (进阶) LeetCode 322. 零钱兑换 LeetCode 279.完全平方数 爬楼梯 (进阶) 好做 import java.util.*;public class Main{// dp[i] 爬到有…

css背景图片属性

基础代码&#xff1a; div {width: 200px;height: 200px;background: url(./css-logo.png); }<div></div> 1、background-repeat&#xff1a;默认是repeat 设置背景图片在容器内是否平铺。 background-repeat: repeat-y; background-repeat: repeat-x; background…

消息中间件之RocketMQ源码分析(二十四)

事务消息 事务消息机制。 事务消息的发送和处理总结为四个过程: 1.生产者发送事务消息和执行本地事务 2.Broker存储事务消息 3.Broker回查事务消息 4.Broker提交或回滚事务消息 生产者发送事务消息和执行本地事务。 发送过程分为两个阶段: 第一阶段,发送事务消息 第二阶段,发…

Spring Expression Language (SpEL)

Spring 表达语言&#xff08;SpEL&#xff09;&#xff0c;支持在运行时查询和操作对象图&#xff0c;可以用于数据绑定、属性访问、方法调用等。使用SpEL可以简化代码并提高应用程序的可维护性。 1 概览 SpelExpressionParser是SpEL的一个核心组件&#xff0c;负责解析和编译…

CentOS安装编译Python3.11.6

CentOs自带python2版本太低&#xff0c;项目需要python3&#xff0c;于是自己安装python 操作指南&#xff1a; 重新下载源代码&#xff1a; # 删除旧的 Python 源代码文件&#xff08;如果有&#xff09; rm -rf Python-3.11.6.tar.xz # 下载 Python 3.11.6 的源代码文件 wget…

Java泛型简介

Java泛型简介 Java泛型是在Java 5中引入的一个特性&#xff0c;它允许程序员在编译时指定类、接口或方法能够接受的类型。泛型的主要目的是提供编译时类型安全检查&#xff0c;避免在运行时因为类型转换错误而导致的ClassCastException。 在没有泛型之前&#xff0c;Java中的集…

如何利用动态静态代理IP实现跨地域网络营销与市场研究

动态代理IP和静态代理IP都可以在跨地域网络营销与市场研究中发挥关键作用&#xff0c;具体实现方式如下&#xff1a; ### 动态代理IP的应用&#xff1a; 1. 跨地域营销活动测试&#xff1a; - 在进行网络营销时&#xff0c;尤其是要验证广告投放、SEO效果或A/B测试不同地区用户…

Ubuntu系统使用Docker搭建Jupyter Notebook并实现无公网ip远程连接

文章目录 1. 选择与拉取镜像2. 创建容器3. 访问Jupyter工作台4. 远程访问Jupyter工作台4.1 内网穿透工具安装4.2 创建远程连接公网地址4.3 使用固定二级子域名地址远程访问 本文主要介绍如何在Ubuntu系统中使用Docker本地部署Jupyter Notebook&#xff0c;并结合cpolar内网穿透…

C语言系列(所需基础:大学C语言及格)-4-转义字符/注释/选择语句

文章目录 一、转义字符二、注释三、选择语句 一、转义字符 加上\会讲原来的字符改变意思&#xff0c;即进行转义 例如\t会使t变成\t用于表示转义字符&#xff0c;使得t转义成水平制表符 其他转义字符&#xff1a; 三字母词&#xff08;展示\&#xff1f;的用处&#xff09;…

C#面:接口是一种引用类型,不可以声明公有的域或私有的成员变量,但是可以声明什么呢?

可以声明&#xff1a;方法&#xff0c;属性&#xff0c;索引器&#xff0c;事件。 接口的主要作用是定义一套规范&#xff0c;使得不同的类可以按照相同的规范进行交互。通过实现接口&#xff0c;类可以具备多态性&#xff0c;即可以以接口类型来引用对象&#xff0c;并调用接…

k8s-001-Centos7内核升级

1. 查看内核 [rootlocalhost ~]# uname -a 2. 执行的命令(安装最新版内核): 下载: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 安装: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm &#xff08; 查看最新版内核&…

杭州默安-安全技术实习生-一面

1.自我介绍 略 2.专业主修的课程 略 3.xss漏洞的类型&#xff0c;原理及防御 原理&#xff0c;服务器对用户的输入过滤不严格&#xff0c;将用户的输入当作Javascript代码执行并返回给客户端。 防御&#xff0c;输入和url参数过滤&#xff0c;HTML实体编码转义特殊字符。…

力扣hot100题解(python版33-35题)

33、排序链表 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5]示例 3&a…

kafka架构详解

文章目录 概述kafaka架构Kafka的设计时什么样的Zookeeper 在 Kafka 中的作用知道 概述 Apache Kafka 是分布式发布 - 订阅消息系统&#xff0c;在 kafka 官网上对 kafka 的定义&#xff1a;一个分布式发布 - 订阅消息传递系统。 Kafka 最初由 LinkedIn 公司开发&#xff0c;Li…

mysql 中 auto_increment 自增约束的用法和配置

自增约束 int字段 特殊约束条件&#xff0c;用于为表中写入新的记录生成唯一的值&#xff0c;一个表中只能有一个自增约束字段 格式 字段 数据类型 auto_increment 创建带有自增约束的表 create table student_game_auto ( id int unique auto_increment, name char(5),…

蚂蚁集团推动编制的全球首个隐私计算一体机国际标准发布

近日&#xff0c;IEEE 标准协会&#xff08;IEEE-SA&#xff09;正式发布并推行了由我国企业主导的全球首个隐私计算一体机国际标准《隐私计算一体机技术要求》&#xff08;IEEE 3156-2023&#xff09;。IEEE-SA是权威国际标准制定机构&#xff0c;该标准的成功发布意味着中国的…

numpy常见操作

返回各维度元组print(img.shape)返回大小img.size返回各维度数据类型print(img.dtype) 数据类型变int8maskmask.astype(np.int8) 注意int32可变float64 但float64变int32会把小数截断 string_可变float64 NumPy常见操作&#xff1a; import numpy as np 创建一个一维数组 ar…

继承-学习2

this关键字&#xff1a;指向调用该方法的对象&#xff0c;一般我们是在当前类中使用this关键字&#xff0c;所以我们常说代表本类对象的引用 super关键字&#xff1a;代表父类存储空间的标识(可看作父类对象的引用) 父类&#xff1a; package ven;public class Fu {//父类成员…

操作系统面经

1. 进程和线程的区别&#xff1f; 调度&#xff1a;进程是资源管理的基本单位&#xff0c;线程是程序执行的基本单位。切换&#xff1a;线程上下文切换比进程上下文切换要快得多。拥有资源&#xff1a; 进程是拥有资源的一个独立单位&#xff0c;线程不拥有系统资源&#xff0…