需要驗證碼的網站(模擬登錄流程)

不管是搶購火車票還是電商網站上搶購商品,如果在節假日沒有搶購工具是很難靠手動搶到的,所以市面上的搶購工具也是層出不窮,但流程都是差不多的,大體上分為2步:1.模擬用戶登錄
2.發送訂單請求
今天主要介紹一下第一步:模擬用戶登錄,作為登錄我也把它拆分成瞭這4步:1.準備登錄
2.驗證碼
3.執行登錄請求
4.驗證登錄是否成功
準備1.chrome瀏覽器:因為需要借助chrome強大的開發者工具2.開源中國的在線工具:密碼的加密解密和一些格式化工具方便查看3.eclipse:開發工具模擬登錄–以下僅供個人學習使用​1.分析請求地址主要分析驗證碼的請求,登錄的請求,以及為登錄提供參數的請求,選定一個網站比如:開源中國,進入它的登錄界面:https://www.oschina.net/home/login,這時候打開開發者工具(ctrl+shift+i),如圖:我們主要關心的是Network這個標簽頁驗證碼的請求:我們發現有些網站沒有驗證碼比如:開源中國和京東,還有些直接需要驗證碼比如:華為商城,其實這些沒有驗證碼的網站隻是在正常登陸的情況下沒有,當出現一些非正常情況會出現驗證碼,比如連續多次登陸失敗,所有我們可以通過這個方式讓驗證碼框出現,如下圖:這時候我們想獲取驗證碼的請求就很容易瞭,點擊:換另外一張圖片,這時候看Network標簽:我們可以開啟另外一個瀏覽器標簽頁:https://www.oschina.net/action/user/captcha,每次刷新都產生一個新的驗證碼登錄的請求:為瞭方便查看登錄請求地址,我們可以寫一個錯誤的密碼,方式和上面一樣,如下圖所示:是以post方式發送的請求,所有我們需要找到Form Data,在Headers標簽的最下面就是Form Data數據:email:******@126.com
pwd:90ba8346f7f1a304a0e53abbf97ebc5051a3837d
verifyCode:
save_login:1
一共4個參數,分別是:用戶名,密碼,驗證碼和save_login,這個參數還是比較少的,都是用戶自己輸入的參數,沒有需要我們獲得額外的參數;關於pwd參數,有些網站是加過密的比如:開源中國,這裡具體用的什麼加密算法,其實我們剛開始並不用去查看網頁的JavaScript腳本,找出裡面到底用的什麼算法,我們可以用窮舉法,因為常用的加密算法就那麼幾種:md5,base64,aes,des,sha1等,所有我們完全可以先大致看一下,很幸運當前使用的加密算法是:sha1為登錄提供參數的請求:這個請求是根據登錄的請求來的,如果我們在Form Data中有一些其他的參數,這時候就需要額外的請求來獲取Form Data中的參數,比如在模擬京東登錄的時候就有這個需求,一般情況下需要請求的地址就是登錄頁面https://www.oschina.net/home/login,很多參數都在你進入登錄界面的時候發送過來瞭,但具體參數在什麼地方就不確定瞭,有可能在html代碼裡面,也可能在腳本裡面,也有可能是其他的某個請求,這個就需要根據實際情況,自己做一些分析2.整理思路寫代碼整體思路就是剛剛上面提到的:1.準備登錄
2.驗證碼
3.執行登錄請求
4.驗證登錄是否成功
代碼結構:/**
* 登陸 分成4個步驟: 1.為登錄準備必要的參數 2.獲取驗證碼 3.執行登錄 4.驗證登錄成功
*/
public void login() {
try {
readyLogin();
getAuthCodeImage();
getInputAuthCode();
int result = executeLogin();
if (result == Constants.SUCCESS) {
testLogin();
}
} catch (Exception e) {
logger.error(“登陸異常”, e);
}
}
/**
* 準備登錄
*
* @throws Exception
*/
protected abstract void readyLogin() throws Exception;
/**
* 執行登陸
*
* @return 登陸的結果
*/
protected abstract int executeLogin() throws Exception;
/**
* 登陸成功,進行測試
*
* @throws Exception
*/
protected abstract void testLogin() throws Exception;
/**
* 獲取驗證碼圖片
*
* @throws Exception
*/
private void getAuthCodeImage() throws Exception {}
/**
* 獲取用戶輸入的驗證碼
*
* @throws IOException
*/
private void getInputAuthCode() throws Exception {}
/**
* 獲取準備登錄地址
*
* @return
*/
protected abstract String getReadyLoginUrl();
/**
* 獲取驗證碼圖片地址
*
* @return
*/
protected abstract String getAuthCodeImageUrl();
/**
* 獲取登陸地址
*
* @return
*/
protected abstract String getLoginUrl();
針對這個結構分佈模擬瞭:開源中國,京東,華為商城 3個網站的登錄詳細代碼:https://github.com/ksfzhaohui/simulation-login總結其實模擬登錄說白瞭就是看你對http協議是否瞭解,還有就是細心觀察,當然還有其他一些網站可能就不那麼簡單瞭,比如淘寶,可能還需要其他方面的知識,比如加密解密.最後再說一遍:以上僅供個人學習使用

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://kuaisubeian.cc/48764.html

kuaisubeian