Welcome to Yumao′s Blog.
因爲淘寶登錄的時候會記錄登錄ip
導致異地登錄次數過多的時候
會強制進行二次驗證攔截
導致登錄失效問題發生
所以就想了下從其他接口快速登入淘寶試試
瞄上了手機快捷掃碼登入方式
直接上代碼
public static void main(String[] args) throws Exception{
ThreadHttpClient.getInstance();
ThreadHttpClient.getInstance().initHttp();
String preAlipayHtml = ClientHttp.doGet("https://auth.alipay.com/login/index.htm");
//獲取安全參數
String brCode = preAlipayHtml.substring(preAlipayHtml.indexOf("barcode: \"")+"barcode: \"".length());
brCode = brCode.substring(0,brCode.indexOf("\""));
String secId = preAlipayHtml.substring(preAlipayHtml.indexOf("securityId: \"")+"securityId: \"".length());
secId = secId.substring(0,secId.indexOf("\""));
System.out.println("二維碼地址:\n"+brCode);
//獲取hidden的input value
Map<String,String> inputParams = new HashMap<String,String>();
while(preAlipayHtml.contains("<input type=\"hidden\"")){
preAlipayHtml = preAlipayHtml.substring(preAlipayHtml.indexOf("<input type=\"hidden\""));
String tmp = preAlipayHtml.substring(0,preAlipayHtml.indexOf("/>")+"/>".length());
tmp = tmp.replace("value = ", "value=");
preAlipayHtml = preAlipayHtml.substring(1,preAlipayHtml.length());
String name = tmp.substring(tmp.indexOf("name=\"")+"name=\"".length());
name = name.substring(0,name.indexOf("\""));
String value = "";
if(tmp.contains("value=")){
value = tmp.substring(tmp.indexOf("value=\"")+"value=\"".length());
value = value.substring(0,value.indexOf("\""));
}
inputParams.put(name, value);
}
//打印二維碼 詳見之前的文章
QRcodeEncoder.qRCodeCommon(brCode,3);
//等待20秒 用來手機操作
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
logger.info("進程等待出現異常");
}
//獲取二維碼認證結果
String checkBarcode = ClientHttp.doGet("https://securitycore.alipay.com/barcode/barcodeProcessStatus.json",
"securityId="+URLEncoder.encode(secId,"utf-8")
+"&_callback="+URLEncoder.encode("_callbacks.callback1","utf-8"));
System.out.println(checkBarcode);
//進行參數整合 發送
Map<String,String> postParams = new LinkedHashMap<String,String>();
postParams.put("ua", "");
postParams.put("support", "000001");
postParams.put("needTransfer", "");
postParams.put("CtrlVersion", "1,1,0,1");
postParams.put("loginScene", "index");
postParams.put("redirectType", "");
postParams.put("personalLoginError", "");
postParams.put("goto", "");
postParams.put("errorVM", "");
postParams.put("sso_hid", "");
postParams.put("site", "");
postParams.put("errorGoto", "");
postParams.put("rds_form_token", inputParams.get("rds_form_token"));
postParams.put("json_tk", "");
postParams.put("method", "qrCodeLogin");
postParams.put("logonId", "");
postParams.put("superSwitch", "true");
postParams.put("noActiveX", "false");
postParams.put("passwordSecurityId", inputParams.get("passwordSecurityId"));
postParams.put("qrCodeSecurityId", inputParams.get("qrCodeSecurityId"));
postParams.put("scid", "");
postParams.put("password_input", "");
postParams.put("J_aliedit_using", "true");
postParams.put("password", "");
postParams.put("J_aliedit_key_hidn", "password");
postParams.put("J_aliedit_uid_hidn", "alieditUid");
postParams.put("alieditUid", inputParams.get("alieditUid"));
postParams.put("REMOTE_PCID_NAME", "_seaside_gogo_pcid");
postParams.put("_seaside_gogo_pcid", "");
postParams.put("_seaside_gogo_", "");;
postParams.put("_seaside_gogo_p", "");
postParams.put("J_aliedit_prod_type", "");
postParams.put("checkCode", "");
postParams.put("idPrefix", "");
ClientHttp.doPost("https://auth.alipay.com/login/index.htm", postParams, "UTF-8");
String loginAlipay = ClientHttp.doGet("http://my.alipay.com");
//登入完畢
System.out.println(loginAlipay);
}