Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

更多Python学习资料可以私信关键字【资料】领取

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

前言我们添加一个模拟登录QQ空间的例子~ ,让我们愉快地开始吧~

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

开发工具Python版本:3.6.4相关模块:requests模块;

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

pycryptodome模块;

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

以及一些Python自带的模块。

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

环境搭建安装Python并添加到环境变量,pip安装需要的相关模块即可。

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

原理简介这里,我们简单介绍下模拟登录QQ空间的原理。一般地,QQ空间可以通过手机QQ扫码登录和账号密码登录。但是账号密码登录有时候需要验证码,为了保证登录的成功率,我们选择扫码登录的方式。

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

首先,进入登录界面:

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

'}

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

更多Python学习资料可以私信关键字【资料】领取

Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

看下请求这个链接需要哪些参数吧:

更多Python学习资料可以私信关键字【资料】领取

测试一下,可以发现大部分参数是固定的,即:

u1:}

actionlogin_sigptqrtoken复制代码很显然,action的构造方式应该是这样的:

'0-0-'+时间戳复制代码至于login_sig参数,容易发现可以通过请求以下链接:

更多Python学习资料可以私信关键字【资料】领取

然后在返回的cookies里得到login_sig参数:

更多Python学习资料可以私信关键字【资料】领取

而请求:

}

更多Python学习资料可以私信关键字【资料】领取

通过测试可以发现上面这些参数都是固定的。最后就剩下ptqrtoken这个参数啦,全局搜索一下,可以发现ptqrtoken这个参数在某个js文件里写了计算方式:

更多Python学习资料可以私信关键字【资料】领取

其中,hash33的js代码为:

function hash33(t) { for (var e = 0, i = 0, n = t.length; i < n; ++i) e += (e << 5) + t.charCodeAt(i); return 2147483647 & e}复制代码转为python代码就是:

def decryptQrsig(qrsig): e = 0 for c in qrsig: e += (e << 5) + ord(c) return 2147483647 & e复制代码那么,现在的问题就是qrsig这个参数如何获得呢?和login_sig参数类似,容易发现请求以下这个链接:

更多Python学习资料可以私信关键字【资料】领取

在返回的cookies里可以得到qrsig这个参数的值:

更多Python学习资料可以私信关键字【资料】领取

而请求:

}

更多Python学习资料可以私信关键字【资料】领取

除了t其他参数都是不变的,感觉t像个随机数(因为测试了下,发现t就算一直保持不变也没关系),既然影响不大,就懒得继续分析t到底是个啥了,就当是个随机数呗(反正位数也都是16位)。

OK,到此为止,我们大概已经了解了整个模拟登录的流程了,那就开始边写代码边进一步明确该流程呗~首先自然是获得login_sig参数:

params = { 'proxy_url': '}

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'])复制代码同时,在请求上述链接的过程中,也就是:

}

saveImage(res.content, 'qrcode.jpg')showImage('qrcode.jpg')复制代码接着我们通过不断请求一开始发现的二维码登录链接,即:

}

while True: params = { 'u1': '}

all_cookies.update(requests.utils.dict_from_cookiejar(res.cookies))qq_number = re.findall(r'&uin=(.+?)&service', res.text)[0]print('[INFO]: Account -> %s, login successfully…' % qq_number)url_refresh = res.text[res.text.find('}

感谢大家的支持和喜欢,小编会每天分享更多Python学习的干货知识给大家,所以大家别忘了关注小编哦。

更多Python爬虫、数据分析、办公自动化、全栈开发、人工智能学习资@林夕编程关键字【资料】领取

作者:戴沐白链接:}

未经允许不得转载:搜热门主机 » Python模拟登录之QQ空间模拟登录(python如何实现模拟登录)

赞 (0)

Warning: count(): Parameter must be an array or an object that implements Countable in /www/wwwroot/srmzj.com/wp-includes/class-wp-comment-query.php on line 405