HTTP協議的請求與資料抓包

longmanma發表於2021-09-09

HTTP請求過程:

輸入目標網站,透過http發出GET請求或者POST請求,透過程式碼找到相應的函式,返回一個相關資料。

什麼是GET請求和POST請求:
GET:是從伺服器獲取原資料,不會更改資料庫的資料和狀態

POST:攜帶資料傳送到伺服器,一般會更改伺服器的資料

透過程式碼說明如何使用GET請求:

圖片描述
爬蟲抓包:

不同伺服器之間的資料都是透過網路來進行傳輸,對那些在網路上傳輸的資料(傳送、請求的資料)進行截獲、編輯、轉存等操作叫做抓包。抓包可以是抓取伺服器請求的資料,透過對網路上傳輸的資料進行抓取,可以對其進行分析。

GET、POST請求傳送的資料包的不同:

GET請求過程中,會出現兩種資料包,目標網站會將這兩個資料包一起傳送出去。狀態碼返回200,成功返回資料

POST請求過程中,會一步一步想目標網站發出請求,目標網站會先會傳送header,裝填碼返回100後,在傳送data,狀態碼返回200,才能成功返回資料

GET與POST請求方式不同,步驟當然也不可能,可能有些人會覺得POST請求步驟麻煩一些。但是並不是這個根據自己的實際請求而定。

透過程式碼分析如何資料抓包:

import java.io.IOException;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;


public class Demo
{
    // 代理驗證資訊
    final static String ProxyUser = "username";
    final static String ProxyPass = "password";

    // 代理伺服器(產品官網 )
    final static String ProxyHost = "t.16yun.cn";
    final static Integer ProxyPort = 31111;

    // 設定IP切換頭
    final static String ProxyHeadKey = "Proxy-Tunnel";


    public static String getUrlProxyContent(String url)
    {
        Authenticator.setDefault(new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(ProxyUser, ProxyPass.toCharArray());
            }
        });
        // 設定Proxy-Tunnel
        Random random = new Random();
        int tunnel = random.nextInt(10000);
        String ProxyHeadVal = String.valueOf(tunnel);

        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ProxyHost, ProxyPort));

        try
        {
            // 處理異常、其他引數
            Document doc = Jsoup.connect(url).timeout(3000).header(ProxyHeadKey, ProxyHeadVal).proxy(proxy).get();

            if(doc != null) {
                System.out.println(doc.body().html());
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        return null;
    }

    public static void main(String[] args) throws Exception
    {
        // 要訪問的目標頁面
        String targetUrl = "";


        getUrlProxyContent(targetUrl);
    }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2730/viewspace-2826269/,如需轉載,請註明出處,否則將追究法律責任。

相關文章