用程序自动登陆58同城网的时候遇到的一些参数处理

本来模拟登陆不算复杂,就是一些参数的处理。但是今天登陆58同城发现有点小蹊跷。

因为你输入了密码,它提交过去的密码域的值还是"password"这个字符串,但是多了2个p1和p2的值,大家看一下提交时候的js代码:

 

var timespan = 1312436462073 - new Date().getTime();
...省略无关的....
var timesign = new Date().getTime() + timespan;
            $("#timesign").val(timesign);
            $("#p1").val(getm32str($("#password").val(),timesign+""));
            $("#p2").val(getm16str($("#password").val(),timesign+""));
            $("#password").val("password");
            return true;


,大概可以看到是用了2个函数对密码字段进行了处理,这个处理函数的2个参数,一个是密码,一个是timesign。这个timesign也大概看出来了,是一个时间戳减去页面加载时候的时间,再加上提交时候的时间。通过对1312436462073 的眼观就基本知道是个1970到现在时间的毫秒数。

通过对页面中js的下载这2个函数的js也找到了,整个页面也就那么5个吧。有个看着很像处理密码的js但是不是,最终给出的js是个文件名很随机的一个js文件,我尝试着对上一次的get(这个登陆不是post是get)的地址串进行测试,发现这个串在一定时间内是可以使用的,但是过了一阵子就不可以了。

猜测:服务器端做了一些判断,这个页面加载时候的时间戳还是有一定的规律的,不能乱写。最后确定这个值就以提交时间的格林尼治的毫秒数作参数(因为请求页面到post的时间可以忽略为0.服务器不会坐的限制这么死),根据这个思路:

再次组装get请求传,并且利用下载厚的js加密。得到我的正确验证,可以用程序模拟登陆了。。。

 

我的程序是winform,我找到了winform可以直接操作js的资料了。。问题解决。。。。

我在网上搜索有人出钱在搞定这个58的登陆。。作为分享技术的目的,,公开给大家了。。

 

你可能感兴趣的:(Date,加密,服务器,测试,WinForm)