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)
猴子捞月英语故事(英文猴子捞月亮的故事)猴子捞月英语故事(英文猴子捞月亮的故事)大思英语睡前故事为孩子们提供更多的听力输入内容。每一个小故事都是一段精彩的旅程,不但可以帮助孩子们磨出英语耳朵,还能陪伴孩子进入甜美的梦乡。
求职意向岗位(意向职位一般写什么)求职意向岗位(意向职位一般写什么)荏苒,岁月如梭。又来到了一年一季毕业季,朝气蓬勃的大学生们走出来校园,正式迎来了他们迈向社会的第一步。求职简历正是你迈向社会进入公司的敲门砖,所以
绩效考核的目的(绩效考核的目的与意义)绩效考核的目的(绩效考核的目的与意义)有些老板在实行绩效考核时有种误区,认为严格考核员工是为了调节员工的收入,甚至减少员工的奖金,结果造成业绩下滑23倍!所以清楚绩效考核的目的和作
什么是绩效考核(绩效考核五个步骤)什么是绩效考核(绩效考核五个步骤)核是指采用科学合理的考核方式,把员工的工作与目标进行对比,评定员工的工作任务完成情况员工的工作职责履行程度和员工的发展情况,将此结果反馈給上级领导
绩效考核的意义(员工绩效考核的意义与作用)绩效考核的意义(员工绩效考核的意义与作用)企业组织个生命体。什么是组织,简单来说组织是有共同目标的人群集合体。组织自形成之初,就必须去解决两个问题1分工与协作的问题2分配的问题。完
360度绩效考核方案(绩效考核与薪酬方案)360度绩效考核方案(绩效考核与薪酬方案)202105141758职场文先生分享职场干货,提升能力!为职场精英打造个人知识体系,升职加薪!公司360度绩效考核管理办法本考核制度适用
科普下认知过程的五个内容认知的基本过程是什么关于到现在认知过程的五个内容认知的基本过程是什么这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道认知过程的五个内容认知的基本过程
教育经历怎么写(个人简历的教育经历怎么写)教育经历怎么写(个人简历的教育经历怎么写)对于应届生和在校大学生求职者来说,教育经历是简历上非常重要的信息,但很多大学生同学们都对教育经历具体怎么写写教育经历需要注意什么问题都不清
简历个人能力怎么写(个人能力及特长简述)简历个人能力怎么写(个人能力及特长简述)个人简历对每一个即将面临职场的人员都是熟悉不过的,大部分的求职人员都是有制作过个人简历的,而且现在制作个人简历模板也是比较快捷的,在素材网站
工作小结怎么写(怎样写工作总结的范文)工作小结怎么写(怎样写工作总结的范文)满怀着希望与憧憬,满载着收获与喜悦,我们共同度过了特殊有意义的一个学期。一年来在上级教育部门的正确领导下,全面贯彻执行党的教育方针,坚持以教育
个人特长和能力(个人能力及特长简述)个人特长和能力(个人能力及特长简述)筛选了5年的简历,其实简历上写的东西我都会快速地浏览一遍,所以兴趣爱好当然也会看。很多人觉得特长爱好这一版块只是用来凑数的,没有实质性的用处。但
对比色有哪些(对比色和互补色有哪些)对比色有哪些(对比色和互补色有哪些)当我们欣赏美图时,总有一些画面会抓住眼球,让人一下就看到。长沙市胡景潇洒走一回这张图片就是运用了对比色的搭配,给人一种强烈的视觉冲击效果。对比色
百度怎么发帖(百度怎么发布信息)百度怎么发帖(百度怎么发布信息)百度贴吧的引流效果毋庸置疑,这里的流量大的你不敢想象,无论卖产品还是项目都是很好的流量池,不然也不会有人买百度贴吧不删帖技术了,同时也会有很多商家在
怎样在百度上发贴子(怎么在百度上发帖推广)怎样在百度上发贴子(怎么在百度上发帖推广)百度贴吧发帖的10个方法技巧202004140054一只兴奋的小猪百度贴吧的引流效果毋庸置疑,这里的流量大的你不敢想象,无论卖产品还是项目
怎样发帖(怎样在百度上发帖)怎样发帖(怎样在百度上发帖)202108311725木语木心对于玩贴吧的同学们来说,首先认识到为什么要玩贴吧,才能认识到这个项目到底适不适合你当前的产品。从而对症下药,去进行系统化
怎样发帖子(网上发帖子曝光怎么发)怎样发帖子(网上发帖子曝光怎么发)不方便电脑发帖怎么办?教你用手机快速发帖1手机打开乌蒙摄影网,httpwww。wnsyjxh。com下拉到底,点击电脑版2切换至电脑版3点击你要发
暑假生活手抄报(暑假计划手抄报简单)暑假生活手抄报(暑假计划手抄报简单)2020年暑期来啦,孩子们暑假手抄报作业不用愁,千千姐姐提前为大家准备好啦!有需要的其他主题手抄报,可以在评论区留言或者私信千千呀简单好看的快乐
孟加拉国港口(孟加拉蒙格拉港口概况)孟加拉国港口(孟加拉蒙格拉港口概况)为缓解孟加拉国吉大港港口货物滞港问题,吉大港海关从3月29日开始,计划用10天时间销毁自2009年至2020年在港口积压的298个集装箱里腐烂和
孟加拉国港口(孟加拉国吉大港地图)孟加拉国港口(孟加拉国吉大港地图)欧洲堵亚洲堵货在码头堵,货主货代心堵欧美传统旺季还没开始,但是,日前全球各大港口已经堵成一锅粥了!北美洛杉矶长滩拥堵卷土重来,温哥华和多伦多加入拥
身临其境的临的意思(蜂拥而至的拥是什么意思)身临其境的临的意思(蜂拥而至的拥是什么意思)1。安然无恙原指人平安没有疾病,后泛指平平安安没有受到任何损伤。安然平安恙疾病。2。拔苗助长比喻违反事物的发展规律,急于求成,反而坏事。
电视投屏怎么设置(手机如何投屏到电视)电视投屏怎么设置(手机如何投屏到电视)相信大家都有这样一个困扰,就是用手机看电影上网课的时候,屏幕太小了,其实只需要打开手机上的一个功能,就可以把手机投屏到电脑上。一苹果手机投屏苹
电瓶快速充电器(电瓶厂家)电瓶快速充电器(电瓶厂家)大家都知道现在的主流智能手机都有快充功能,高效的充电能让手机在高强度使用下带来更持久的续航,但大家听说过电池也能快充么?本人是个电子烟烟民,对于18650