用程式自動登陸58同城網的時候遇到的一些引數處理

NO IMAGE

本來模擬登陸不算複雜,就是一些引數的處理。但是今天登陸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的登陸。。作為分享技術的目的,,公開給大家了。。