首页 » 网站推广 » 猜歌php源码技巧_猜歌没有我猜不到的歌因为我有Python脚本

猜歌php源码技巧_猜歌没有我猜不到的歌因为我有Python脚本

duote123 2024-12-18 0

扫一扫用手机浏览

文章目录 [+]

作为一个脑热的听歌爱好者,于是他越陷越深,越刷越得劲。
可是,他的排名竟一贯上不去!
正当他惆怅之际,一个绝妙的想法ding的一下就涌现了,学会了它,妈妈再也不用担心他的排名上不去了!

一、思路剖析

为了搞清楚猜歌的过程是什么样的,首先通过抓包来对要乞降相应进行剖析。
在PC版微信中打开小程序,然后通过Fiddler进行抓包。
我们会创造猜歌的过程由两个要求构成。

猜歌php源码技巧_猜歌没有我猜不到的歌因为我有Python脚本

(ps.当然也可以直接抓手机真个包,但是由于各种缘故原由,会相对繁芜一些)

猜歌php源码技巧_猜歌没有我猜不到的歌因为我有Python脚本
(图片来自网络侵删)

一个是获取歌曲的干系信息(包括答案)。
对!
你没有听错,返回的数据直接包括了猜歌的答案,要求如下:

这是一个get要求,包括了用于上岸验证的token、user_id等,返回的结果为歌曲干系的信息,个中最主要的是answer(红圈部分)。

另一个是发送猜歌要求,如下:

这同样是一个get要求,也包含了token等参数,还包含了提交的答案answer和歌曲的sid。
通过返回的is_right字段便可以判断是否猜对。
(1则猜对,否则不对)

那么,思路已经很明晰了:通过python编写程序,首先获取歌曲的答案,然后将答案提交。

二、获取答案

首先定义一个类:

class guessStar():def __init__(self,token,userId): ''' 初始化函数 ''' self.token = token # 用户token self.userId = userId # 用户ID1234567891011

随后,根据抓包的要求定义一个获取答案的函数:

def get_answer(self):'''获取答案函数'''url = 'https://api.zuiqiangyingyu.net/index.php/api/guess_v2/Index'headers = {'Connection':'keep-alive', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat', 'content-type':'application/json', 'Accept-Encoding':'gzip, deflate, br'}params = (('token',self.token), # 用户token,须要换本钱身的 ('user_id',self.userId), # 用户ID,须要换本钱身的 ('wechat_type','wechat_song'))res = requests.get(url,headers=headers,params=params) # 发送要求data = res.json() # 获取返回结果(json格式)music = data['d']['list'][0] # 音乐数据sid = music['id'] # 音乐IDanswer = music['answer'] # 对应的答案return (sid,answer)123456789101112131415161718192021222324252627282930313233

这个要求很大略,只须要将数据包对付的url、参数、要求头等仿照出来即可。

三、提交答案

同样,通过抓包剖析后定义一个提交答案的函数:

def guess(self,sid,answer):'''猜歌函数'''url= 'https://api.zuiqiangyingyu.net/index.php/api/guess_v2/Sub'headers = {'Connection':'keep-alive', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat', 'content-type':'application/json', 'Accept-Encoding':'gzip, deflate, br'}params = (('token',self.token), # 用户token,须要换本钱身的 ('user_id',self.userId), # 用户ID,须要换本钱身的 ('sid',sid), # 音乐ID ('answer',answer), # 答案 ('wechat_type','wechat_song'))res = requests.get(url,headers=headers,params=params)result = res.json()['d']['user']['is_right'] # 猜歌的结果return result12345678910111213141516171819202122232425262728293031

函数返回的是is_right字段,如果是1则表示答案精确,否则则是缺点的。

四、猜猜猜

有了get_answer()和guess()函数,我们便可愉快地开始自动化猜歌答题了,定义如下函数:

def do_guess(self,num):'''进行猜歌(通过num指定次数)'''N = 0while True: sid,answer = self.get_answer() result = self.guess(sid,answer) if result == '1': # 如果猜对 N += 1 print('第%s首歌回答精确!'%sid) else: print('第%s首歌回答缺点!'%sid) if N >= num: # 如果达到指定次数 break123456789101112131415161718192021222324252627

个中num参数表示猜歌的次数。
在主函数中调用它:

ifname== ‘main’:star = guessStar('xxxx','xxx')star.do_guess(1001) # 开始猜歌123

xxxx分别表示账号的token和用户ID,这里须要大家换本钱身的。
所谓一千零一夜,于是我也跑1001次好了,run一下:

在运行之前,我是这样的:

运行之后,我是这样的:

没有错,我的排名正在噌噌噌地往上升!

舒畅了~~

写在末了

我想本篇文章的真正意义不是代码本身,而是希望为大家供应更加广泛的思路:

Python不仅是教室上纷繁繁芜的理论知识,还能为我们的生活供应便利;

Python不仅是项目中呆板无味地日复一日,还能为我们的生活带来欢快;

Python不仅是发展里勤学不辍地专一苦学,还能为我们的生活增长造诣;

无论是Python、Java、C,乃至拍照、绘画。
whatever,它们都是我们兴趣或是谋生的技能。
我想,只有真正地热爱它们,它们也才能在我们的生活中更好地结出盛果、生根萌芽!

标签:

相关文章

php常量率低技巧_PHP 常量详解教程

PHP 常量常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。注释...

网站推广 2024-12-19 阅读0 评论0