1、迅雷的密码怎么生成的,同一个密码多次抓包获取的值都不一样
2、验证码是怎么获取的. 我应该怎么取判断是否需要输入验证码
这是我点POST提交时获取的参数 密码是123456 但是每次取的P都不一样
求大神指点!第一次做模拟登陆,没有一点头绪!密码验证码模拟登陆迅雷模拟登陆POST提交

解决方案 »

  1.   

    1. 从加密后形式上看,应该是MD5加密。每次MD5都不一样,那应该是每次打开页面,由服务器派发一个随机码,登陆的时候把这个码和密码连接起来再md5,称作加salt。
    2. 验证码实现原理一般是,先由服务器生成一个随机串,保存到session或其他存储机制中,然后由服务器将随机串进行文字转化为图片,加干扰,然后输出到浏览器。表单提交到后端,后端代码就可以判断验证码是否输入正确。
    3. 如何判断是否需要验证码?这个只能分析html代码结构了吧~
      

  2.   

    i.xunlei.com 你能看看是怎么实现的吗?
      

  3.   

    我这里有一份关于迅雷登陆的资料:http://jixun.org/932-thunder-weblogin/
    我在使用JS GET  http://login.xunlei.com/check/[email protected]无法获取返回的值
    能不能在细节伤指点下,因为这个就是细节的上的一些问题.求大神指点!
      

  4.   


    找到了!,代码被压缩替换了,很难看,不过还是可以看出一些端倪的。
    追踪提交按钮的引用,一直追踪到这个函数。w.u = B.username;
    w.p = md5(md5(md5(B.password)) + B.captcha.toUpperCase());
    由此可以看出,w.p是密码两次md5加密后和验证码的大写连接再md5一次。这个B.captcha又是什么,往上追踪发现有一个条件赋值,而且在网络连接中发现一个新的连接,但不是xhr。就是这个check login的连接,response中没有东西,因为XHR不能跨域,二级域也不能,但是潜入一个iframe指向这个url还是可以的。迅雷的工程师既然用到cookie能跨子域,甚是妙哉。
    看到response header中有一个set-cookie报头。check_result=0:!GZN;这个check_result,故名思意,按冒号分割开,0表示不需要用户输入验证码,即是用后面的四个字符作为验证码。
    这个B.captcha的值便是,若check_result返回0,则使用check_result后4位字符,若check_result返回非0,则表示要求用户输入验证码,则取验证码输入框中的值。看到这个链接中有两个VERIFY_KEY,一个去一个返,应该是有做验证的。