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); }