使用http代理,解決Java對外請求需固定ip問題


背景:對接第三方接口,第三方為安全考慮,需要固定ip設置白名單。公司對外使用動態ip。

辦法:

1. 購買一台ip固定的服務器,比如雲虛擬服務器。搭建http代理服務器,比如prioxy。

2.安裝Privoxy代理軟件

yum install -y epel-release privoxy

編輯 /etc/privoxy/config 文件

修改綁定地址,搜索 listen-address ,修改需要綁定的IP

listen-address  0.0.0.0:8118

設置enable-remote-toggle 為 1

enable-remote-toggle 1

重啟服務

service privoxy restart

查看服務狀態

[root@localhost ~]# service privoxy status
Redirecting to /bin/systemctl status privoxy.service
● privoxy.service - Privoxy Web Proxy With Advanced Filtering Capabilities
   Loaded: loaded (/usr/lib/systemd/system/privoxy.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-03-04 17:38:26 CST; 5s ago
  Process: 23138 ExecStart=/usr/sbin/privoxy --pidfile /run/privoxy.pid --user privoxy /etc/privoxy/config (code=exited, status=0/SUCCESS)
 Main PID: 23139 (privoxy)
   Memory: 872.0K
   CGroup: /system.slice/privoxy.service
           └─23139 /usr/sbin/privoxy --pidfile /run/privoxy.pid --user privox...

Mar 04 17:38:25 localhost.localdomain systemd[1]: Starting Privoxy Web Proxy ...
Mar 04 17:38:26 localhost.localdomain systemd[1]: Started Privoxy Web Proxy W...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# netstat -anop | grep 8118
tcp        0      0 0.0.0.0:8118            0.0.0.0:*               LISTEN      23139/privoxy        off (0.00/0/0)
tcp        0      0 172.16.1.120:8311       172.16.1.123:28118      ESTABLISHED 15519/nginx: worker  off (0.00/0/0)

 

ps:

https://www.cnblogs.com/hongdada/p/10787924.html

https://blog.csdn.net/Drug_/article/details/88067231

https://www.jianshu.com/p/05ac5d0911cc

 

3.HttpClient 設置代理

HttpPost httpPost = new HttpPost(url);
//設置代理IP,設置連接超時時間 、 設置 請求讀取數據的超時時間 、 設置從connect Manager獲取Connection超時時間、
HttpHost proxy = new HttpHost("172.16.1.120",8118);
RequestConfig requestConfig = RequestConfig.custom()
    .setProxy(proxy)
    .setConnectTimeout(10000)
    .setSocketTimeout(10000)
    .setConnectionRequestTimeout(3000)
    .build();
httpPost.setConfig(requestConfig);

 

如果是無法修改的jar,本地如何調試?

 

找到目標源代碼,在項目代碼目錄下新建一個和目標代碼一樣的package,並新建同名類文件,拷貝目標類代碼至新文件,然后進行對應代理的設置。

原理是代碼只加載一次,誰最優先加載誰,從而實現代碼覆蓋。

注意:本地開發調試完畢后,請刪除這個覆蓋文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM