原神搶碼,米游社搶碼-首發

本文章僅供學習使用-侵權請聯系刪除_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.pswp.cn/news/711193.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711193.shtml
英文地址,請注明出處:http://en.pswp.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…