[Python代码]人人网登录脚本(含登录失败及验证码处理)

更多

用Python实现的人人网登录脚本在网上并不少见,但是一般都没有对登录失败验证码进行处理,而本文中的代码将对登录失败的情况进行具体的错误提示,并通过自动下载验证码手动输入的方式处理验证码问题

本文中的代码是去年一次活动中,为了获得人人墙中的状态而编写的,代码中的一些部分参考了网上其他的脚本,今天又做了一定的修改。

在去年实现代码的过程时,人人墙还需要登录才能看到其中的状态,今天再看的时候发现人人墙已经不需要登录就可以查看状态了。而当初会遇到验证码的问题也是误打误撞,因为在脚本里把密码写错了,才碰到了大家一般没有碰到的验证码问题。

下面的代码是配置信息,文件为config.py:

其中,LOGINURL是登录用的地址,ICODEURL是获得验证码的地址。FAILCODE是登录失败时的错误信息,其来源是人人网登录时的一个javascript脚本(目前名为login-v6.js,约1080行位置处)。其中1、2、4、128均表示用户名和密码不匹配,实测知道4表示密码错误,128表示帐号不存在,另外两个不清楚。

在提交登录后,发现获得的response中的url是如下图所示的homeUrl所示的地址,用正则表达式获得其中的failCode字段的数据,和上面对应的信息匹配,输出错误信息。

登录人人网失败的信息

上图中,还可以看到一个catchaCount字段,这是记录同一个邮箱地址密码错误的次数,当次数大于3时,即要求输入验证码,但此时更改邮箱地址则不会要求输入验证码。

下面是登录人人网时候post过去的数据,包括email(邮箱)、autoLogin(勾选自动登录时为true)、icode(提交的验证码)、origURL(登录后的目标页,默认为如图所示)、domain(域)、key_id(不清楚含义)、captcha_type(验证码类型)、password(密码)、rkey(不清楚用途)。

登录人人网post的数据

经过验证,一般情况下只需要提供email和password两项即可,不过为了应对登录后跳转的其他页面的应用,下面的脚本也加入了origURL字段。而对于要求输入验证码时,再加入icode字段。

下面的代码文件名为renren.py,是具体的实现代码。

在登录中,我们目前还没有用到_get_requestToken

在这段代码中,我的处理逻辑如下:

当已登录标志位为False时,执行循环:post数据执行模拟登录,获取当前网址(cur_url)、网页内容(web_content)、用户ID(ruid)。如果获取到ruid,则表示登录成功;否则,登录失败,获取失败代码failCode,输出失败信息,如果是需要输入验证码,则下载验证码图片,手动输入,重新执行循环,否则结束登录操作。下图是对应的流程图。

人人网登录流程图

在这里,ruid是登录后页面源代码中均含有的一个选项,在XN.namespace( 'user' );后面。由于目前不太清楚id和ruid有什么区别,并且看到的两个值是相同的,暂时使用的是ruid。

login.py是一个demo程序,用于实验登录效果。具体使用时根据具体的需求修改。

本文内容遵从CC3.0版权协议,转载请注明:转自Pythoner

本文链接地址:[Python代码]人人网登录脚本(含登录失败及验证码处理)

    • ontseason
    • 2014/06/07 6:34下午

    博主你知道你的代码显示不出来么 [em_ganga]

    • ontseason
    • 2014/06/07 6:35下午

    ontseason :
    您的评论正在审核
    博主你知道你的代码显示不出来么

    擦…发表完评论就出来了,学习!

    • good
    • 2014/08/25 9:58上午

    好帖子 实验一下可以不

      • alioth310
      • 2014/08/25 10:38上午

      当然可以,不过这个代码时间比较久了,不能确定现在还一定OK

  1. [em_tiaopi] [em_sx] [em_sbq] [em_kzh] 好牛逼的说。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  2. [em_tiaopi] [em_sx] [em_sbq] [em_kzh] 好牛逼的说哈啊哈哈。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  1. 暂无 Trackback

[em_zan] [em_yali] [em_xiao] [em_xhj] [em_tucao] [em_tu] [em_tiaopi] [em_sx] [em_sdz] [em_sbq] [em_mobai] [em_kzh] [em_ku] [em_ksh] [em_keai] [em_jiong] [em_jing] [em_hx] [em_han] [em_ganga] [em_daxiao] [em_cool] [em_chi] [em_bu] [em_bizui] [em_ai]

return top