1. 程式人生 > >httpClient 帶驗證碼登入實現

httpClient 帶驗證碼登入實現

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;


import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.DefaultHttpParams;


public class __10086 {


public void test() throws HttpException, IOException{
String url = "http://12582.10086.cn/user/login/verifycode.aspx";
HttpClient httpClient = new HttpClient();
DefaultHttpParams.getDefaultParams().setParameter("http.protocol.cookie-policy", CookiePolicy.BROWSER_COMPATIBILITY);
GetMethod getMethod = new GetMethod("http://12582.10086.cn/user/login/verifycode.aspx");  
getMethod.setRequestHeader("Host", "12582.10086.cn");
getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.2; rv:5.0.1) Gecko/20100101 Firefox/5.0.1");
getMethod.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
getMethod.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");
getMethod.setRequestHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7");
getMethod.setRequestHeader("Connection", "keep-alive");
//getMethod.setRequestHeader("Cookie", "Hm_lvt_6e06bb5a029d6c5473951d1079638828=1328777184942; Hm_lvt_e64244e1e591d0337e17a12b714c0996=1328777186856; WT_FPC=id=183.16.35.230-1530895312.30204303:lv=1328174810886:ss=1328174810886; ASP.NET_SessionId=gj25p555exiqjd45kdcqoq55; BIGipServernxt-wz=369797312.20480.0000; Hm_lpvt_6e06bb5a029d6c5473951d1079638828=1328777184942; Hm_lpvt_e64244e1e591d0337e17a12b714c0996=1328777186856; .12582portals=4CF97704261E34DBE12913CBA18211005E960282A771D94FF3709BAFC99610A7397BE8293ADB2E876A0A7380AC4A158016419745F27511D6E79F82A408D009519D6DDFE18A578E5CFC5F48025C75B33B6EBD43953A7DB05AEBAAB856E0AA29112818B4910350AADACD2012F5DE56297B1F6622ED7F4959D31E19C474E48F7773D7966437");
getMethod.setRequestHeader("Cache-Control", "max-age=0");
int code = httpClient.executeMethod(getMethod);
        Header header = getMethod.getResponseHeader("Set-cookie"); 
        System.out.println(header.getValue());
        String headerCookie = header.getValue();
        String SessionId = headerCookie.substring(headerCookie.indexOf("NET_SessionId=") + "NET_SessionId=".length(), headerCookie.indexOf(";"));
        System.out.println(SessionId);
        String BIGipServernxt = headerCookie.substring(headerCookie.indexOf("BIGipServernxt-wz=") + "BIGipServernxt-wz=".length(), headerCookie.length());
        BIGipServernxt = BIGipServernxt.substring(0, BIGipServernxt.indexOf(";"));
        StringBuffer sb = new StringBuffer();
        sb.append("Hm_lvt_6e06bb5a029d6c5473951d1079638828=1328778307106; ");
        sb.append("Hm_lvt_e64244e1e591d0337e17a12b714c0996=1328778308090; ");
        sb.append("WT_FPC=id=183.16.35.230-1530895312.30204303:lv=1328174810886:ss=1328174810886; ");
        sb.append("ASP.NET_SessionId=").append(SessionId).append("; ");
        sb.append("BIGipServernxt-wz=").append(BIGipServernxt).append("; ");
        sb.append("Hm_lpvt_6e06bb5a029d6c5473951d1079638828=1328778307106; ");
        sb.append("Hm_lpvt_e64244e1e591d0337e17a12b714c0996=1328778308090");
        System.out.println(sb.toString());
        String ValidCode = savegif(getMethod);
        getMethod.releaseConnection();
        // 第二次連結
        httpClient.getHostConfiguration().setHost("12582.10086.cn", 80, "http");
        PostMethod method = getPostMethod(ValidCode);
method.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.2; rv:5.0.1) Gecko/20100101 Firefox/5.0.1");
method.setRequestHeader("Host", "12582.10086.cn");
method.setRequestHeader("Accept", "application/json, text/javascript, */*");
method.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");
//method.setRequestHeader("Accept-Encoding", "gzip, deflate");
method.setRequestHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7");
method.setRequestHeader("Connection", "keep-alive");
method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
method.setRequestHeader("X-Requested-With", "XMLHttpRequest");
method.setRequestHeader("Referer", "http://12582.10086.cn/user/login/");
method.setRequestHeader("Cookie", sb.toString()); 
httpClient.executeMethod(method);
System.out.println(method.getStatusCode());
System.out.println(method.getResponseBodyAsString());
// 第三次連結
Header header1 = method.getResponseHeader("Set-cookie"); 
System.out.println("dd=" + header1.getValue());
sb.append("; " + header1.getValue());
Cookie[] cookies = httpClient.getState().getCookies();
method.releaseConnection();
String my = "http://12582.10086.cn/my";
System.out.println(sb.toString());
getMethod = new GetMethod(my);
getMethod.setRequestHeader("Host", "12582.10086.cn");
getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.2; rv:5.0.1) Gecko/20100101 Firefox/5.0.1");
getMethod.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
getMethod.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");
getMethod.setRequestHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7");
getMethod.setRequestHeader("Connection", "keep-alive");
getMethod.setRequestHeader("Referer", "http://12582.10086.cn/user/login");
getMethod.setRequestHeader("Cookie", sb.toString());
code = httpClient.executeMethod(getMethod);
System.out.println(getMethod.getStatusCode());
System.out.println(getMethod.getResponseBodyAsString());
File storeFile = new File("c:/2008sohu.html");  
        FileOutputStream output = new FileOutputStream(storeFile);  
        //得到網路資源的位元組陣列,並寫入檔案  
        output.write(getMethod.getResponseBody());  
        output.close(); 
}

public String savegif(GetMethod getMethod) throws IOException {
File storeFile = new File("c:/2008sohu.gif");  
        FileOutputStream output = new FileOutputStream(storeFile);  
        //得到網路資源的位元組陣列,並寫入檔案  
        output.write(getMethod.getResponseBody());  
        output.close();  
        InputStreamReader is = new InputStreamReader(System.in); 
BufferedReader br = new BufferedReader(is);
String ValidCode = "";
try {
ValidCode = br.readLine();
br.close();
is.close();
} catch(Exception e) {
e.printStackTrace();
}
return ValidCode;
}

private PostMethod getPostMethod(String ValidCode) {
PostMethod post = new PostMethod("/ajax/postlogin");
NameValuePair[] simcard = {
new NameValuePair("email", "XXX"),
new NameValuePair("password", "XXX"),
new NameValuePair("ValidCode", ValidCode),
new NameValuePair("rme", "0"),
};
post.setRequestBody(simcard);
return post;
}

public static void main(String args[]) {
__10086 _10086 = new __10086();
try {
_10086.test();
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

相關推薦

httpClient 驗證登入實現

import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; impo

postman模擬驗證登入問題

今天研究一個問題,就是用postman模擬網站的帶驗證碼登入。本文把這一過程做個流水賬式記錄。 我最初的設想是這樣: http是一種無連線無狀態協議,請求相應完畢連線即斷開,由於其無狀態,重複請求的身份認證一般通過session、cookie、url重寫這幾種方式來實現,我

python驗證登入

本次登入的是中國石油大學ACM的OJ(管理員不要打我),原型是hustoj,選擇的原因是驗證碼比較簡單,純數字。 實際上利用了驗證碼頁面和登入頁面cookie的一致。 但是在順序上我們需要先開啟驗證碼頁面,有興趣可以簡單測試一下: 1.開啟登入頁面(不要關閉)(http:/

關於java實現需要登入驗證的定時網路爬蟲(爬取的資料存庫)

 博主6月初的時候換了個工作,剛進來的時候什麼事沒有,愣是上班喝茶逛網站渡過了一週。那週週五的boss突然問我會不會爬蟲。 作為一個才工作一年的javaer表示根本沒接觸過,但是那種情況下你還敢說不會麼,但是當時也不敢說的很絕對,因此就和boss就會一點。 當時就隱隱約約有爬

Yii2自驗證實現

框架 point logs classname 行為 widget ive mage idg   總共分為三個方面:控制器配置、模型rules配置和視圖配置。 第一步:控制器配置     將下列代碼配置在actions中,請求驗證碼鏈接對應為 “控制器/cap

登入功能的開發(驗證)

1.因為要和資料庫進行連線,先獲取資料來源,建立連線物件。這些操作在工具類中完成。 public class DbUtil { private static DataSource ds=null; //建立連線池 static{ Propertie

使用requests庫實現驗證登入

import requests from bs4 import BeautifulSoup import urllib.request headers = { ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWeb

利用Python識別圖形驗證實現自動登入!室友驚訝的合不攏嘴!

驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。 雖說圖形驗證碼最簡單,但是對於我這等新手,還是要苦學一番。首先尋找測試網站,網站選的是如雲閣小說網,小網站不怕被封。他們的驗證碼一般如下:      

使用Servlet實現圖形驗證登入頁面

1.介紹 首先需要寫一個生成圖形驗證碼的Servlet: 我這裡的Servlet為:createImageServlet 然後我們使用登入頁面來驗證是否能獲取圖形驗證碼。 登入後通過Servlet判斷使用者名稱密碼是否為張三和123(這裡簡單操作就不連線資料庫了) 登入頁面

爬蟲工程師教你如何用Python爬蟲模擬登入驗證網站!

問題分析: 1、爬取網站時經常會遇到需要登入的問題,這是就需要用到模擬登入的相關方法。python提供了強大的url庫,想做到這個並不難。這裡以登入學校教務系統為例,做一個簡單的例子。 在這裡我還是要推薦下我自己建的Python開發學習群:483546416,都是學Python開發的,如果你

python3 遠端登入驗證

第一步:用burpsuite 或者fiddler 等抓包看 post提交的資料,方便設定 post 的data 包 然後設定 header 和 data url = 'http://xxxxxxxx/login.php' s = requests.session() data = {

Java 圖片驗證實現和模擬簡單的登入

 MainFrame類主要實現了GUI的介面和簡單的驗證邏輯  package com.application import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.ev

Spring Boot+Spring Security專案開發(三):實現簡訊驗證登入

說在前面 博主最近會有很多專案跟大家一起分享,做完後會上傳github上的,希望讀友們能給博主提提意見哈哈 這個專案是第三方登入和安全方面的,關於後臺與app和網站的登入連線操作的實戰專案 各位如果可以就給我star哈哈謝謝啦 實

【jmeter】實現驗證登入

目錄 一、第三方工具準備 第三方圖形影象識別工具:tesseract-ocr下載、安裝、提取圖片驗證碼 二、jmeter必用jar包準備 (1)Jmeter外掛開發相關的jar包,這些在Jmeter的lib中都有,直接匯入工程專案即可:

Python學習筆記13:selenium webdriver 實現驗證登入

#通過ActionChains+autoit進行驗證碼圖片的下載,通過pytesseract識別驗證碼中的字元,由於有一定錯誤率,進行重試直至成功from selenium import webdriver from LanternAnswer.login import Lo

javaweb登入驗證實現

使用: Controller:生成驗證碼 @RequestMapping("/user/check.jpg") public void createCode(HttpServletRequest request, HttpServletResponse response)

單realm實現shiro手機驗證登入

上一篇文章寫的是shiro實現手機驗證碼登入:http://blog.csdn.net/modjie/article/details/79221774    用了多realm的方式,需要自定義token等多個類,實現過程複雜,並且還存在一個問題:密碼錯誤異常UnknownA

登入功能圖片驗證實現

    首先從網上下載一個生成驗證碼的Servlet:package com.train.controller; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ja

防機器登入驗證實現 與 輸入匹配驗證

 程式碼: login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLI

jsp登入驗證功能實現

package com.coffee.action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.Buffere