java 模擬多ip訪問

来源:https://www.cnblogs.com/eian/archive/2019/09/06/11478409.html
-Advertisement-
Play Games

java模擬多ip請求 package url_demo; import java.util.Random; public class DemoUtl { public static int index = 0; public static void main(String[] args) thro ...


java模擬多ip請求


package url_demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Random;

public class HttpUtilTest {

    private int index = 0;

    public String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            URLConnection conn = realUrl.openConnection();

            // 隨機生成ip
            String ip = randIP();
            conn.setRequestProperty("X-Forwarded-For", ip);
            conn.setRequestProperty("HTTP_X_FORWARDED_FOR", ip);
            conn.setRequestProperty("HTTP_CLIENT_IP", ip);
            conn.setRequestProperty("REMOTE_ADDR", ip);
            conn.setRequestProperty("Host", "");
            conn.setRequestProperty("Connection", "keep-alive");
            conn.setRequestProperty("Content-Length", "17");
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestProperty("Origin", "ORIGIN");
            conn.setRequestProperty("User-Agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Referer", "REFERER");
            conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
            conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,pt;q=0.2");

            conn.setDoOutput(true);
            conn.setDoInput(true);
            out = new PrintWriter(conn.getOutputStream());
            out.print(param);
            out.flush();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            synchronized (this) {
                DemoUtl.index = DemoUtl.index + 1;
            }
            System.out.println("第" + DemoUtl.index + "次訪問; -->  || 當前線程:" + param + "  || 請求成功! || 模擬ip: " + ip
                    + " || 返回結果: " + result.toString().hashCode());
        } catch (Exception e) {
            // System.out.println("發送 POST 請求出現異常!" + e);
            // e.printStackTrace();
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }

    public static String randIP() {
        Random random = new Random(System.currentTimeMillis());
        return (random.nextInt(255) + 1) + "." + (random.nextInt(255) + 1) + "." + (random.nextInt(255) + 1) + "."
                + (random.nextInt(255) + 1);
    }
}
package url_demo;

import java.util.Random;

public class DemoUtl {

    public static int index = 0;

    public static void main(String[] args) throws InterruptedException {
        try {
            for (int i = 0; i < 100000; i++) {
                Thread.sleep((new Random()).nextInt(200) + 100);
                new Thread(new Runnable() {
                    @Override
                    public void run() {

                        for (int j = 0; j < 100000; j++) {
                            try {
                                Thread.sleep((new Random()).nextInt(3200) + 1500);
                                HttpUtilTest tt = new HttpUtilTest();
                                tt.sendPost(
                                        "https://www.baidu.com",
                                        Thread.currentThread().getName());
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python安裝 安裝python可以去https://www.python.org官網下載 點開官網後點擊下圖我圈出來的地方 然後翻到頁面最後,選擇要安裝的版本 點擊下載後打開,將 Add Python 3.7 to PATH 打上勾,點擊 Install Now 最後就安裝好了 Sublime安 ...
  • 每個人都有自己的一些理想,都有自己的一些渴望,像環游世界,實現財富自由,和所愛的人在一起也想要能夠擺脫束縛,去享受自由的生活。 但是生活有時候往往只有苟且,而詩和遠方離你卻特別遙遠,人們在日復一日的工作中得到了一些東西,也失去了一些東西,很多人天天埋頭苦幹,去尋找他們所謂的穩定工作,尋找他們所謂的中 ...
  • 談談 Callable 任務是怎麼運行的?它的執行結果又是怎麼獲取的? 向線程池提交Callable任務,會創建一個新線程(執行任務的線程)去執行這個Callable任務,但是通過Future get獲取任務的執行結果是在提交任務的調用者線程中,那問題一:調用者線程如何獲取執行任務的線程的結果? 在 ...
  • PHP數組: 創建定義數組: 數值數組: array():定義數組 如上array()函數定義的內容會以數組的形式傳給變數Array 自動分配ID鍵: 手工分配ID鍵: count():獲取數組長度 count()函數返回數組的長度 關聯數組:帶有指定鍵的數組,每個鍵關聯一個值(類似鍵值對) 多維數 ...
  • 閱讀本文大概需要 4 分鐘。 作者:黃小斜 不知道大家知不知道彈性工作制這種說法。 這個說法據說最早也是出現在互聯網公司里的,所謂的彈性工作制是什麼意思呢?簡單來說,就是指,員工的工作時間可以隨著工作的情況來進行適當的調整。 工作輕鬆的時候,每天工作時間縮短幾小時,工作比較忙的時候,工作時間就延長幾 ...
  • 02-jQuery的選擇器 我們以前在CSS中學習的選擇器有: 今天來學習一下jQuery 選擇器。 jQuery選擇器是jQuery強大的體現,它提供了一組方法,讓我們更加方便的獲取到頁面中的元素。 1、jQuery 的基本選擇器 代碼如下: <!DOCTYPE html> <html lang= ...
  • 今日所學: /* 2019.08.19開始學習,此為補檔。 */ JDK 1.6:byte , int , short , char , enum JDK 1.7:byte , int , short , char , enum , String 數組:相同類型的容器。其 a.大小固定 b.記憶體連續 ...
  • 上面的結果返回為null getResource方法要註意類路徑 測試後發現方法參數為 ,返回的url是類路徑的。 maven工程編譯後的class文件目錄結構的類路徑,不需要以 開頭。 就正常了 ``` ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...