QQ空间进入(免权限看qq空间)
QQ空间进入(免权限看qq空间)
更多Python学习资料可以私信关键字【资料】领取前言
我们添加一个模拟登录QQ空间的例子~ ,让我们愉快地开始吧~开发工具Python版本:3.6.4相关模块:
requests模块;
pycryptodome模块;
以及一些Python自带的模块。环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。原理简介
这里,我们简单介绍下模拟登录QQ空间的原理。一般地,QQ空间可以通过手机QQ扫码登录和账号密码登录。但是账号密码登录有时候需要验证码,为了保证登录的成功率,我们选择扫码登录的方式。
首先,进入登录界面:'https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https://qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https://qzs.qq.com/qzone/v5/loginsucc.html?para=izone&pt_qr_app=手机QQ空间&pt_qr_link=https://z.qzone.com/download.html&self_regurl=https://qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=https://z.qzone.com/download.html&pt_no_auth=0'复制代码
简单抓包可以发现二维码登录的接口很可能是这个(ptqrlogin看着就像是二维码登录):
更多Python学习资料可以私信关键字【资料】领取
看下请求这个链接需要哪些参数吧:
更多Python学习资料可以私信关键字【资料】领取
测试一下,可以发现大部分参数是固定的,即:u1:https://qzs.qq.com/qzone/v5/loginsucc.html?para=izoneptredirect:0h:1t:1g:1from_ui:1ptlang:2052js_ver:19112817js_type:1pt_uistyle:40aid:549000912daid:5ptdrvs:AnyQUpMB2syC5zV6V4JDelrCvoAMh-HP6Xy5jvKJzHBIplMBK37jV1o3JjBWmY7j*U1eD8quewY_has_onekey:1复制代码
所以我们只需要知道以下参数就行啦:actionlogin_sig ptqrtoken 复制代码
很显然,action的构造方式应该是这样的:'0-0-'+时间戳 复制代码
至于login_sig参数,容易发现可以通过请求以下链接:
更多Python学习资料可以私信关键字【资料】领取
然后在返回的cookies里得到login_sig参数:
更多Python学习资料可以私信关键字【资料】领取
而请求:https://xui.ptlogin2.qq.com/cgi-bin/xlogin?复制代码
需要携带的参数为:
更多Python学习资料可以私信关键字【资料】领取
通过测试可以发现上面这些参数都是固定的。最后就剩下ptqrtoken这个参数啦,全局搜索一下,可以发现ptqrtoken这个参数在某个js文件里写了计算方式:
更多Python学习资料可以私信关键字【资料】领取
其中,hash33的js代码为:functionhash33(t){for(vare=0,i=0,n=t.length;i<n;++i) e+=(e<<5)+t.charCodeAt(i);return2147483647&e } 复制代码
转为python代码就是:defdecryptQrsig(qrsig): e=0 forcinqrsig: e+=(e<<5)+ord(c) return2147483647&e复制代码
那么,现在的问题就是qrsig这个参数如何获得呢?和login_sig参数类似,容易发现请求以下这个链接:
更多Python学习资料可以私信关键字【资料】领取
在返回的cookies里可以得到qrsig这个参数的值:
更多Python学习资料可以私信关键字【资料】领取
而请求:https://ssl.ptlogin2.qq.com/ptqrshow复制代码
需要携带的参数如下图所示:
更多Python学习资料可以私信关键字【资料】领取
除了t其他参数都是不变的,感觉t像个随机数(因为测试了下,发现t就算一直保持不变也没关系),既然影响不大,就懒得继续分析t到底是个啥了,就当是个随机数呗(反正位数也都是16位)。
OK,到此为止,我们大概已经了解了整个模拟登录的流程了,那就开始边写代码边进一步明确该流程呗~首先自然是获得login_sig参数:params={'proxy_url':'https://qzs.qq.com/qzone/v6/portal/proxy.html', 'daid':'5','hide_title_bar':'1','low_login':'0','qlogin_auto_login':'1','no_verifyimg':'1','link_target':'blank','appid':'549000912','style':'22','target':'self','s_url':'https://qzs.qq.com/qzone/v5/loginsucc.html?para=izone', 'pt_qr_app':'手机QQ空间','pt_qr_link':'https://z.qzone.com/download.html', 'self_regurl':'https://qzs.qq.com/qzone/v6/reg/index.html', 'pt_qr_help_link':'https://z.qzone.com/download.html', 'pt_no_auth':'0' } res=self.session.get(self.xlogin_url,headers=self.headers,verify=False,params=params) all_cookies.update(requests.utils.dict_from_cookiejar(res.cookies)) pt_login_sig=all_cookies['pt_login_sig'] 复制代码
然后获得ptqrtoken参数:params={'appid':'549000912','e':'2','l':'M','s':'3','d':'72','v':'4','t':str(random.random()),'daid':'5','pt_3rd_aid':'0' } res=self.session.get(self.qrshow_url,headers=self.headers,verify=False,params=params) all_cookies.update(requests.utils.dict_from_cookiejar(res.cookies)) ptqrtoken=self.__decryptQrsig(all_cookies['qrsig']) 复制代码
同时,在请求上述链接的过程中,也就是:https://ssl.ptlogin2.qq.com/ptqrshow复制代码
我们还可以获得二维码图片(即res.content其实就是二维码的图片数据),并将其显示出来:saveImage(res.content,'qrcode.jpg')showImage('qrcode.jpg') 复制代码
接着我们通过不断请求一开始发现的二维码登录链接,即:https://ssl.ptlogin2.qq.com/ptqrlogin复制代码
来检测二维码当前的状态:whileTrue:params={'u1':'https://qzs.qq.com/qzone/v5/loginsucc.html?para=izone','ptqrtoken':ptqrtoken,'ptredirect':'0','h':'1','t':'1','g':'1','from_ui':'1','ptlang':'2052','action':'0-0-'+str(int(time.time())),'js_ver':'19112817','js_type':'1','login_sig':pt_login_sig,'pt_uistyle':'40','aid':'549000912','daid':'5','ptdrvs':'AnyQUpMB2syC5zV6V4JDelrCvoAMh-HP6Xy5jvKJzHBIplMBK37jV1o3JjBWmY7j*U1eD8quewY_','has_onekey':'1' } res=self.session.get(self.qrlogin_url,headers=self.headers,verify=False,params=params)if'登录成功'inres.text:break elif'二维码已失效'inres.text:raiseRuntimeError('Failtologin,qrcodehasexpired...') time.sleep(2) 复制代码
若登录成功,则用该请求返回的链接来更新session的cookies从而获得最终的QQ空间登录会话对象:all_cookies.update(requests.utils.dict_from_cookiejar(res.cookies)) qq_number=re.findall(r'&uin=(.+?)&service',res.text)[0] print('[INFO]:Account->%s,loginsuccessfully...'%qq_number) url_refresh=res.text[res.text.find('http'):res.text.find('pt_3rd_aid=0')]+'pt_3rd_aid=0'self.session.cookies.update(all_cookies) res=self.session.get(url_refresh,allow_redirects=False,verify=False) all_cookies.update(requests.utils.dict_from_cookiejar(res.cookies)) self.session.cookies.update(all_cookies)
数学知识180度是什么角关于到现在180度是什么角这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道180度是什么角小编也是到网上收集了一些与180度是什
学自由泳(如何学会自由泳的步骤)学自由泳(如何学会自由泳的步骤)自由泳由于动作没有太多的限制,而且泳姿具有阻力小速度快耗力小的优点,对于很多游泳爱好者来说,非常喜欢采用这种游泳方式。下面周老师就为大家介绍一下自由
三无少女(三无女人是哪三无)三无少女(三无女人是哪三无)02107261232ACGN得益于现在发达的物流水平和高超的种植技术,现在咱们能吃到的水果越来越多了,有的小时候没吃过,只在电视上看到的水果也能很方便
大珠小珠落玉盘形容什么乐器(大珠小珠落玉盘的古诗)大珠小珠落玉盘形容什么乐器(大珠小珠落玉盘的古诗)大珠小珠落玉盘形容的是什么乐器的弹奏声?以上是蚂蚁庄园小课堂11月20日的问题,答对可以领取小课堂每天一份的180g小鸡饲料。接下
大珠小珠落玉盘是什么乐器(大珠小珠落玉盘通常表达什么)大珠小珠落玉盘是什么乐器(大珠小珠落玉盘通常表达什么)被誉为民乐之王的琵琶有着大珠小珠落玉盘的风雅琴声。作为我国古老的民族乐器之一,琵琶以其独特的艺术魅力,在灿烂辉煌的中国文化历史
大珠小珠落玉盘(大珠小珠落玉盘比喻下雨)大珠小珠落玉盘(大珠小珠落玉盘比喻下雨)琵琶行中有一句嘈嘈切切错杂弹,大珠小珠落玉盘。意思是琵琶嘈嘈声切切声互为交错地弹奏就像大珠小珠一串串掉落玉盘。录制考试曲目龙船01。轮指是由
霾怎么读(霾这是什么字)霾怎么读(霾这是什么字)在黄沙漫天的天气里,小喵的心情也恶劣起来。不敢出门,在家翻说文解字,不想赫然又看到了一个霾字!真是在哪里都逃不掉啊!黄沙漫天,说文解霾甲骨文中的霾,看上去蛮
独特的近义词是什么(独具魅力的近义词)独特的近义词是什么(独具魅力的近义词)最近有家长,一直在找四年级下册的近义词和反义词。今天终于有时间,将其进行汇总。家长们可以拉到文末,把图片打印出来,已经排好版了(共4页),学习
怎么查定位一个手机号(手机定位咋查)怎么查定位一个手机号(手机定位咋查)现在的社会,手机现已成为了万众随身的一种设备,它可以上网和联络朋友,可以作为人们的掌上电脑。现在的手机大多数都是智能化的,可以和电脑比美,可以说
微信陌生人打招呼可以查聊天记录(怎么能恢复微信聊天记录)微信陌生人打招呼可以查聊天记录(怎么能恢复微信聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机空间
知识化干戈为玉帛干戈是什么意思关于到现在化干戈为玉帛干戈是什么意思这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道化干戈为玉帛干戈是什么意思小编也是到网上收集
免费wifi软件(免费用网络的软件)免费wifi软件(免费用网络的软件)说起网速测试,无论是在PC端还是移动端,都是不少用户的一个热需求之一。特别是在5G迅猛发展的当下,刚换上5G套餐的用户,想了解自己用的5G套餐究
vivox9市场价多少钱(vivox9s手机多少钱一台)vivox9市场价多少钱(vivox9s手机多少钱一台)安卓中国11月16日消息,今晚,vivo在美轮美奂的水立方举办新品发布会,正式推出自拍神器vivoX9X9Plus。外观方面
小米2s手机怎么样(小米耐用还是华为耐用)小米2s手机怎么样(小米耐用还是华为耐用)说到小米,相信国内的手机用户并不陌生。发展至今,小米已经拥有众多的产品系列,而其中最经典的莫过于数字系列。在2011年,小米正式推出了旗下
群控系统一套多少钱(群控30台手机多少钱)交友粉群控赚钱项目,适合工作室批量放大大家知道目前短视频行业非常的火爆,并且由视频平台延伸的一些玩法也非常的多,像游戏小程序小说分销橱窗带货等等都是不错的选择,越来越多的人在利用短
脚部去角质(去角质怎么用步骤)脚部去角质(去角质怎么用步骤)有些人表面上是光鲜亮丽的体面人,背地里却是狂野的抠脚大汉。抠脚到底有多爽,只能说一直抠脚一直爽。前有日本人举办的抠脚大赛,让全世界的抠脚大汉们都纷纷着
蒲公英花语(蒲公英的唯美短句)蒲公英花语(蒲公英的唯美短句)蔷薇爱的思念跟那些高大魁梧的花比起来,蔷薇花更显得温柔多情,它腼腆含羞,攀援在篱笆之上,缠缠绵绵。蔷薇的花语是爱情和爱的思念,寓意着爱情喜庆思念,适合
关羽是怎么死的(张飞是怎么死的)有人说郭嘉的死最可惜,如果郭嘉不死,就会参与赤壁之战,就会协助曹操打赢赤壁之战,这样的话中国历史上根本没有三国,只有大一统的魏朝,但是,郭嘉再厉害,也不过是一个谋士而已。曹操身边又
钟馗是怎么死的(天师钟馗三兄弟怎么死的)钟馗是怎么死的(天师钟馗三兄弟怎么死的)钟馗之死王明见收集整理唐朝德宗年间有个叫钟馗的举子,此人长得豹头虎额铁面环眼脸上长满虬须。这钟馗外貌虽丑可才华出众武艺超群。这年恰逢秋季科举
钟馗是谁(钟馗的扮演者是谁)钟馗是谁(钟馗的扮演者是谁)提到钟馗,很多人会问钟馗是什么人物?钟馗是中国传说中很出名的一个神,他会捉鬼,能够帮助人们打鬼驱邪,很受人们喜爱。每逢过年过节,民间就会挂上印有钟馗画像
钟馗是怎么死的(民间故事钟馗之死)钟馗是怎么死的(民间故事钟馗之死)钟馗,道教俗神,专司打鬼驱邪。中国民间常挂钟馗神像辟邪除灾,从古至今都流传着钟馗捉鬼的典故传说。唐朝德宗年间有个叫钟馗的举子,此人长得豹头虎额铁面
鬼鲛死了吗(鬼鲛被断头为什么没死)鬼鲛死了吗(鬼鲛被断头为什么没死)说起干柿鬼鲛,相信喜欢看火影忍者的朋友应该很熟悉吧?!在火影忍者故事中,尤其是在晓组织中,鬼鲛是为数不多一个能够抛开自我为整体服务的人。早年在雾隐