python抽卡游戏_【python爬虫】原神公测预抽卡活动自动化抽卡脚本(一小时免登陆)...

[Python] 纯文本查看 复制代码import requests

import json

import time

#pyinstaller -D -i favicon.ico crawl.py

class Crawl():

#初始化cookies

def __init__(self):

self.login_ticket = "";

self.account_id="";

self.login_uid="";

self.cookie_token="";

#get请求

def get(self,url):

payload = {}

headers = {

'Cookie': 'login_uid='+self.login_uid+'; account_id='+self.account_id+'; login_ticket='+self.login_ticket+'; cookie_token='+self.cookie_token,

}

response = requests.request("GET", url, headers=headers, data = payload)

return json.loads(response.text)

#post请求

def post(self,url,data):

headers = {

'Cookie': 'login_uid='+self.login_uid+'; account_id='+self.account_id+'; login_ticket='+self.login_ticket+'; cookie_token='+self.cookie_token

}

response = requests.request("POST", url, headers=headers, data = data)

return json.loads(response.text)

def post2(self,url):

headers = {

'Cookie': 'login_uid='+self.login_uid+'; account_id='+self.account_id+'; login_ticket='+self.login_ticket+'; cookie_token='+self.cookie_token

}

response = requests.request("POST", url, headers=headers, data = {})

return json.loads(response.text)

#获取以获得的物品

def item_list(self):

url = "https://api-takumi.mihoyo.com/event/e20200828bingo/item_list"

res = self.get(url)

return res

#分享

def share(self):

url = "https://api-takumi.mihoyo.com/event/e20200828bingo/share"

res = self.get(url)

return res

#获取基本信息,是否分享,还剩翻卡次数

def home(self):

url ="https://api-takumi.mihoyo.com/event/e20200828bingo/home"

res = self.get(url)

return res

#获取验证码

def getCaptcha(self,mobile):

body ={"action_type":"login","t":"1599809011444","mobile":mobile}

url = "https://webapi.account.mihoyo.com/Api/create_mobile_captcha";

res = self.post(url,body)

return res

def login(self,mobile,captcha):

body ={"mobile_captcha":captcha,"is_bh2":"false","action_type":"login","t":"1599809011444","mobile":mobile}

url = "https://webapi.account.mihoyo.com/Api/login_by_mobilecaptcha";

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36',

}

session = requests.session()

response = session.post(url, headers=headers, data = body)

res = json.loads(response.text)

if(res["code"] == 200 and res["data"]['status'] == 1 ):

self.login_ticket = str(res["data"]['account_info']['weblogin_token']) ;

self.account_id= str(res["data"]['account_info']['account_id']);

self.login_uid= str(res["data"]['account_info']['account_id']);

cookies_url = "https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?t=1599809011444&login_ticket="+res["data"]['account_info']['weblogin_token']

headers = {

'Cookie': 'login_uid='+self.login_uid+'; account_id='+self.account_id+'; login_ticket='+self.login_ticket

}

response = session.get(cookies_url, headers=headers)

cookies_res = json.loads(response.text)

self.cookie_token= str(cookies_res["data"]['cookie_info']['cookie_token']);

def gameinfo(self,flag):

url = "https://api-takumi.mihoyo.com/event/e20200828bingo/"+flag

if(flag == 'start'):

res = self.post(url,{})

else:

res = self.get(url)

return res['data']['game_id']

def click(self,game_id):

sum = 0

for i in range(9):

url = "https://api-takumi.mihoyo.com/event/e20200828bingo/next?game_id="+str(game_id)+"&index="+str(i);

res = self.post2(url)

if res["message"] == "OK":

sum +=1

if sum == 9:

print("本轮翻卡完毕")

def saveCookies(self):

t = time.time()

item = {

"login_ticket":self.login_ticket,

"t":t,

"account_id":self.account_id,

"login_uid":self.login_uid,

"cookie_token":self.cookie_token,

}

jsonstr = json.dumps(item,ensure_ascii=False)#转json

try:

f =open("./cookies.json",'r')

f.close()

except IOError:

f = open("./cookies.json",'w')

print("新建了文件cookies.json")

f = open("./cookies.json",'w+',encoding='utf-8')

f.write(jsonstr)

f.close()

print("cookies保存成功")

def readCookies(self):

try:

t = time.time()

f =open("./cookies.json",encoding='UTF-8')

item = json.load(f)

if t-item['t']>3600:

return False

else:

self.login_ticket = item['login_ticket']

self.account_id = item['account_id']

self.login_uid = item['login_uid']

self.cookie_token = item['cookie_token']

return True

f.close()

except IOError:

return False

if __name__ == '__main__':

#主程序

crawl = Crawl()

# 登录

if crawl.readCookies() == True:

word = input("您在一小时前登录过,是否读取cookies登录,回车确认,输入n/N进行登录")

if word != "":

print("开始登录————")

mobile = input("请输入手机号码:")

print("开始获取验证码————")

print(crawl.getCaptcha(mobile))

captcha = input("请输入验证码:")

crawl.login(mobile,captcha)

crawl.saveCookies()

else:

print("开始登录————")

mobile = input("请输入手机号码:")

print("开始获取验证码————")

print(crawl.getCaptcha(mobile))

captcha = input("请输入验证码:")

crawl.login(mobile,captcha)

crawl.saveCookies()

#分享

homeRes = crawl.home()

nowday_share_cnt = homeRes['data']['nowday_share_cnt']

if nowday_share_cnt == 0:

print("开始分享————")

print(crawl.share())

#获取基本信息

print("获取基本信息————")

homeRes = crawl.home()

lucky = homeRes['data']['lucky']

chance = homeRes['data']['chance']

print("当前幸运值:"+str(lucky))

print("可抽卡数:"+str(chance))

word = None

while word != "":

word = input("是否进行翻卡,继续请输入回车,退出请直接关闭")

if chance == 0:

print("您今天的抽卡已经到达上限,请次日再来")

word = None

while word != "":

word = input("您的今日的翻卡完毕,请输入回车关闭程序")

exit()

print("开始翻卡————")

new_round = homeRes['data']['new_round']

for index in range(chance):

print("开始第"+str(index+1)+"次翻卡")

if new_round == True:

flag = "start"

game_id = crawl.gameinfo(flag)

crawl.click(game_id)

else:

flag = "game_info"

game_id = crawl.gameinfo(flag)

crawl.click(game_id)

word = None

while word != "":

word = input("您的今日的翻卡完毕,请输入回车关闭程序")

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

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

相关文章

vs2010 sp1 安装 Silverlight4_Tools 提示 错误 解决办法

vs2010 sp1 在安装 Silverlight4_Tools 时提示我未安装相应版本的 vs 解决办法: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS\BuildNumber 将 "2052" 的值修改为 "10.0.30319",然后安装Silverlight4Tools程序…

VMware Workstation网络连接的三种模式

经常要使用VMWare Workstation来在本地测试不同的操作系统&#xff0c;以前也搞不清楚网络连接三种模式&#xff0c;最近看了几篇文章才算明白。现总结如下&#xff1a; 1. VMware Workstation的虚拟网络组件 虚拟<网卡/网络适配器>&#xff1a;见下图。安装一个虚拟PC…

arcgis字段计算器利用python按两列要求编号

示例 代码 # -*- coding: utf-8 -*- A1 B1 C1 A11 B11 C11 A21 B21 C21 A31 B31 C31 A41 B41 C41 def a(name,bianhao):namename.encode(utf-8);global A,B,C,A1,B1,C1,A2,B2,C2,A3,B3,C3,A4,B4,C4if(namea):if(bianhao4):end"A"str(A)AA1elif(bianhao3):end"B…

python获取文件读写权限_Python 查看文件的读写权限方法

实例如下&#xff1a;# -*- coding: utf-8 -*-# author flynetcnimport sys, os, pwd, stat, datetime;LOG_FILE /var/log/checkDirPermission.log;nginxWritableDirs [/var/log/nginx,/usr/local/www/var,];otherReadableDirs [/var/log/nginx,/usr/local/www/var/log,];di…

dd , /dev/zero和/dev/null

dd 命令 功能&#xff1a;把指定的输入文件拷贝到指定的输出文件中&#xff0c;并且在拷贝过程中可以进行格式转换。可以用该命令实现 DOS 下的 diskcopy 命令的作用。先用 dd 命令把软盘上的数据写成硬盘的一个寄存文件&#xff0c;再把这个寄存文件写入第二张软盘上&#xf…

netpbm

netpbm是一款图形转换的工具。netpbm工具库格式转换命令.Netpbm是一个很好用的&#xff0c;很强大的命令方式图像处理程序&#xff0c;支持WINDOWS、LINUX及部分UNIX系统。将一幅png图像转成bmp格式。命令序列为&#xff1a;pngtopnm test.png > a.pnmppmtobmp -bpp24 a.pnm…

利用anaconda prompt打开jupyter notebook

切换盘符 到指定文件夹下 查看改文件夹下的文件夹 再其文件夹下打开jupyter notebook 或者 结果&#xff1a; 创建python3文件 编写代码&#xff08;运行代码快捷键ctrl enter​​​​​​​&#xff09;

rest接口_深度干货 | 测试REST服务接口

openEA开源社区开源&#xff0c;我们是认真的&#xff01;这里每天给大家呈现有价值的开源资讯&#xff0c;欢迎您的来稿与推荐&#xff0c;点击上方蓝色字&#xff0c;加入我们吧&#xff01;摘要&#xff1a;较新的BPM版本中&#xff0c;提供了SOAP和REST两种接口&#xff0c…

asp。net中常用的文件操作类

**文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; using System.IO; #endregionnamespace CommonUtilities { /// <summary> /// 文件操作类 /// </summary> public class FileHelper { #region 检测指…

修改linux开机画面

制作开机Logo方法一:Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片&#xff0c;把自己的Logo图片&#xff08;png格式&#xff09;转换成ppm格式&#xff0c;替换这个文件&#xff0c; 同时删除logo_linux_clut224.c logo_linux_clut224.o文件 &#xff0c;重…

列表反向组成数字相加,并输出数组反向组成列表

# Definition for singly-linked list. #在节点ListNode定义中&#xff0c;定义为节点为结构变量。 #节点存储了两个变量&#xff1a;value 和 next。value 是这个节点的值&#xff0c;next 是指向下一节点的指针&#xff0c;当 next 为空指针时&#xff0c;这个节点是链表的最…

公众号jdk 获取手机号_如何获取公众号推文封面图

曾经有一张好看的图片摆在我的眼前&#xff0c;我却没能保存&#xff0c;等到失去的时候我才后悔莫及。如果上天能够给我一个再来一次的机会&#xff0c;我会对那张图片说三个字&#xff1a;我&#xff0c;要&#xff0c;你……现在大部分使用智能手机的小伙伴们&#xff0c;一…

container_of深入理解

container_of在linux头文件kernel.h中定义&#xff0c;如下&#xff1a; 14#ifndef offsetof15#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)16#endif1718#ifndef container_of19/**20 * container_of - cast a member of a structure out to the co…

正在读取软件包列表... 有错误!

正在读取软件包列表... 有错误&#xff01;E: Encountered a section with no Package: headerE: Problem with MergeList /var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dists_natty_main_i18n_Translation-enE: 无法解析或打开软件包的列表或是状态文件。问题&#xff1a…

2021-10-19

下载的工具箱 找到下载工具箱位置 打开工具箱属性 出现错误1 无法启动配置 RasterCommander.ImageServer 解决方法

python自动控制库_Python最为神奇的库,可控制你的鼠标键盘自动运行!

Python最为神奇的库&#xff0c;可控制你的鼠标键盘自动运行&#xff01;这个库让你可以控制和监控输入设备。喜欢我还有更多干货入门知识&#xff0c;来公众号『程序员中文社区』聊聊吧。Python最为神奇的库&#xff0c;可控制你的鼠标键盘自动运行&#xff01;对于每一种输入…

iframe 自适应高度 跨域

window.navigator.Allframesnull;window.navigator.Allframes { iframe1: window }; //根据页面name属性查找到子页面所在Ifame对象 window.navigator.getFrameByNamefunction(oName){ return this.Allframes[oName] }; //将一个Iframe对象注册到window.navigator.Al…

【转】Windows服务调试技巧

关于调试windows service, 其实这是一个老生常谈的问题了. 通常的处理办法是, 在service运行后, 在调试器中选择attach to process. 然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试. 往往当attach到我们的service的时候, 这部分代码…