做网站需要注意事项,网站推广免费,转转网站怎么建设,网页微信怎么登录前言相传#xff0c;就在前几日#xff0c;在网上闲逛时#xff0c;刷到了一个猜歌的小程序。这个小程序通过播放歌曲部分片段#xff0c;然后让用户来猜它的歌名#xff0c;大概是这样的#xff1a;作为一个脑热的听歌爱好者#xff0c;于是他越陷越深#xff0c;越刷…前言相传就在前几日在网上闲逛时刷到了一个猜歌的小程序。这个小程序通过播放歌曲部分片段然后让用户来猜它的歌名大概是这样的作为一个脑热的听歌爱好者于是他越陷越深越刷越得劲。可是他的 「排名竟一直上不去」正当他惆怅之际一个绝妙的想法 「ding」的一下就出现了学会了它妈妈再也不用担心他的排名上不去了一、思路分析为了搞清楚猜歌的过程是什么样的首先通过抓包来对请求和响应进行分析。在PC版微信中打开小程序然后通过Fiddler进行抓包。我们会发现猜歌的过程由两个请求构成。 (ps.当然也可以直接抓手机端的包但是由于各种原因会相对复杂一些)一个是 「获取歌曲的相关信息」(包括答案)。对你没有听错返回的数据直接包括了猜歌的答案请求如下这是一个get请求包括了用于登陆验证的 「token」、 「user_id」等返回的结果为歌曲相关的信息其中最重要的是 「answer」(红圈部分)。另一个是 「发送猜歌请求」如下这同样是一个get请求也包含了token等参数还包含了提交的答案 「answer」和歌曲的 「sid」。通过返回的 「is_right」字段便可以判断是否猜对。(1则猜对否则不对)那么思路已经很明晰了通过python编写程序首先获取歌曲的答案然后将答案提交。二、获取答案首先定义一个类classguessStar:def__init__(self,token,userId):初始化函数self.token token # 用户tokenself.userId userId # 用户ID随后根据抓包的请求定义一个获取答案的函数defget_answer(self):获取答案函数url https://api.zuiqiangyingyu.net/index.php/api/guess_v2/Indexheaders { 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,headersheaders,paramsparams) # 发送请求data res.json # 获取返回结果(json格式)music data[ d][ list][ 0] # 音乐数据sid music[ id] # 音乐IDanswer music[ answer] # 对应的答案return(sid,answer)这个请求很简单只需要将数据包对于的url、参数、请求头等模拟出来即可。三、提交答案同样通过抓包分析后定义一个提交答案的函数defguess(self,sid,answer):猜歌函数url https://api.zuiqiangyingyu.net/index.php/api/guess_v2/Subheaders { 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,headersheaders,paramsparams)result res.json[ d][ user][ is_right] # 猜歌的结果returnresult函数返回的是is_right字段如果是1则表示答案正确否则则是错误的。四、猜猜猜有了get_answer和guess函数我们便可愉快地开始自动化猜歌答题了定义如下函数defdo_guess(self,num):进行猜歌(通过num指定次数)N 0whileTrue:sid,answer self.get_answerresult self.guess(sid,answer)ifresult 1: # 如果猜对N 1print( 第%s首歌回答正确!%sid)else:print( 第%s首歌回答错误!%sid)ifN num: # 如果达到指定次数break其中num参数表示猜歌的次数。在主函数中调用它if__name__ __main__:star guessStar( xxxx, xxx)star.do_guess( 1001) # 开始猜歌xxxx分别表示账号的token和用户ID这里需要大家换成自己的。所谓 「一千零一夜」于是我也跑1001次好了run一下在运行之前我是这样的运行之后我是这样的没有错我的排名正在噌噌噌地往上升舒服了~~写在最后我想本篇文章的真正意义可能不在于代码本身而是希望为大家提供更加广泛的思路Python不仅是课堂上纷繁复杂的理论知识还能为我们的生活提供便利Python不仅是项目中枯燥无味的日复一日还能为我们的生活带来欢Python不仅是成长里孜孜不倦的埋头苦学还能为我们的生活增添成就无论是Python、Java、C#乃至摄影、绘画。whatever它们都是我们兴趣或是谋生的技能。我想只有真正的 「热爱它们」它们也才能在我们的生活中更好地结出盛果、生根发芽