Linux curl命令使用代理、以及代理種類介紹


   本文轉自http://aiezu.com/article/linux_curl_proxy_http_socks.html,感謝作者
  有時出於個人隱私的原因,我們希望隱藏自己的IP,讓http服務器無法記錄我們訪問過它,這時我們可以使用代理服務器。
  代理服務器(Proxy Server)是工作在瀏覽器與http服務器之間的一個服務應用,所有經過代理服務器的http請求,都會被轉發到對應的http服務器上。
  當然,除了http可以使用代理外,https、ftp、RTSP、pop3等協議同樣可以使用代理訪問,不過本文介紹的是支持http、https協議訪問的代理。
  

一、代理服務器分類:

  我們比較常用、支持http(s)協議代理主要分為兩大類:http代理和socks代理,見下表:
大類 小類 子類 描述
http代理 http代理
https代理
透明代理 http服務器知道瀏覽器端使用了代理,並能獲取瀏覽器端原始IP;
匿名代理 http服務器知道瀏覽器端使用了代理,但無法獲取瀏覽器端原始IP;
高匿名代理 http服務器不知道瀏覽器端使用了代理,且無法獲取瀏覽器端原始IP;
SOCKS代理 SOCKS4 被稱為全能代
理,支持http
和其他協議
只支持TCP應用;
SOCKS4A 支持TCP應用;支持服務器端域名解析;
SOCKS5 支持TCP和UDP應用;支持服務器端域名解析;
支持多種身份驗證;支持IPV6;
 

二、Linux curl命令代理設置參數:

  linux curl命令可以使用下面參數設置http(s)代理、socks代理,已經設置它們的用戶名、密碼以及認證方式:
參數 用法
-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
使用HTTP代理訪問;如果未指定端口,默認使用8080端口;
protocol默認為http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"
--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此參數會覆蓋“-x”參數;
--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlm
代理認證方式,參考:
--anyauth
--basic
--diges
--negotiate
--ntlm
-U <user:password>
--proxy-user <user:password>
設置代理的用戶名和密碼;

 

三、Linux curl命令設置代理舉例:

1、linux curl命令設置http代理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 指定http代理IP和端口
curl -x 113.185.19.192:80 http: //aiezu .com /test .php
curl --proxy 113.185.19.192:80 http: //aiezu .com /test .php
 
#指定為http代理
curl -x http_proxy: //113 .185.19.192:80 http: //aiezu .com /test .php
 
#指定為https代理
curl -x HTTPS_PROXY: //113 .185.19.192:80 http: //aiezu .com /test .php
 
#指定代理用戶名和密碼,basic認證方式
curl -x aiezu:123456@113.185.19.192:80 http: //aiezu .com /test .php
curl -x 113.185.19.192:80 -U aiezu:123456 http: //aiezu .com /test .php
curl -x 113.185.19.192:80 --proxy-user aiezu:123456 http: //aiezu .com /test .php
 
#指定代理用戶名和密碼,ntlm認證方式
curl -x 113.185.19.192:80 -U aiezu:123456 --proxy-ntlm http: //aiezu .com /test .php
 
#指定代理協議、用戶名和密碼,basic認證方式
curl -x http_proxy: //aiezu :123456@113.185.19.192:80 http: //aiezu .com /test .php
 

2、Linux curl命令設置socks代理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#使用socks4代理,無需認證方式
curl --socks4 122.192.32.76:7280 http: //aiezu .com /test .php
curl -x socks4: //122 .192.32.76:7280 http: //aiezu .com /test .php
 
#使用socks4a代理,無需認證方式
curl --socks4a 122.192.32.76:7280 http: //aiezu .com /test .php
curl -x socks4a: //122 .192.32.76:7280 http: //aiezu .com /test .php
 
#使用socks5代理,basic認證方式
curl --socks5 122.192.32.76:7280 -U aiezu:123456 http: //aiezu .com /test .php
curl -x socks5: //aiezu :123456@122.192.32.76:7280 http: //aiezu .com /test .php
 
#使用socks5代理,basic認證方式,ntlm認證方式
curl -x socks5: //aiezu :123456@122.192.32.76:7280 --proxy-ntlm http: //aiezu .com /test .php
 

四、測試代理的隱匿度:

1、測試前准備:

  測試前,我們先在網站根目錄也一個php頁面“test.php”,用於輸出http服務器接收到的訪客IP地址信息,"test.php"測試頁的代碼如下:
1
2
3
4
5
6
7
8
9
<?php
$array  array ( 'HTTP_USER_AGENT' 'HTTP_HOST' 'HTTP_ACCEPT' 'PATH' 'SERVER_SIGNATURE' 'SERVER_SOFTWARE' 'SERVER_NAME' 'SERVER_ADDR' 'SERVER_PORT' 'DOCUMENT_ROOT' 'SERVER_ADMIN' 'SCRIPT_FILENAME' 'REMOTE_PORT' 'GATEWAY_INTERFACE' 'SERVER_PROTOCOL' 'REQUEST_METHOD' 'QUERY_STRING' 'REQUEST_URI' 'SCRIPT_NAME' 'PHP_SELF' 'REQUEST_TIME' );
//  將 $_SERVER 數組賦予 $srv數組;
$srv  $_SERVER ;
// 釋放掉 $srv中不相關的鍵
foreach ( $array  as  $name  ) {
     unset( $srv $name  ]);
}
print_r( $srv );
  保存好"test.php"后,然后我們通過不用代理,和使用透明代理、匿名代理、高匿名代理、SOCKS分別去訪問,看頁面輸出的內容結果。
  

2、測試使用不同代理輸出結果:

  ①.  通過linux curl不使用代理訪問:
1
2
3
4
5
[root@aiezu.com ~] # curl http://aiezu.com/test.php
Array
(
     [REMOTE_ADDR] => 114.112.104.126
)
  可以看出,http服務器獲取到的"REMOTE_ADDR"IP地址為"114.112.104.126",此IP地址就是客戶端lcurl的真實IP地址。 
 
  ②. 通過linux curl命令使用http透明代理訪問:
1
2
3
4
5
6
7
8
9
[root@aiezu.com ~] # curl -x 37.139.9.11:80 http://aiezu.com/test.php
Array
(
     [HTTP_VIA] => 1.1 ThunderVPN (squid /3 .3.8)
     [HTTP_X_FORWARDED_FOR] => 114.112.104.126
     [HTTP_CACHE_CONTROL] => max-age=259200
     [HTTP_CONNECTION] => keep-alive
     [REMOTE_ADDR] => 37.139.9.11
)
  可以看出REMOTE_ADDR字段變成了代理服務器的IP地址,同時真實IP地址也能從HTTP_X_FORWARDED_FOR字段獲取到,還多了一個“HTTP_VIA”字段,可以看出出代理並不能隱藏真實IP,而且也會讓http服務器自動瀏覽器端使用了代理。
 
  ③. 通過linux curl命令使用http匿名代理訪問:
1
2
3
4
5
6
[root@aiezu.com ~] # curl -x 60.21.209.114:8080 http://aiezu.com/test.php
Array
(
     [HTTP_PROXY_CONNECTION] => Keep-Alive
     [REMOTE_ADDR] => 60.21.209.114
)
  從上面可以看出,REMOTE_ADDR字段變成了代理服務器的IP地址,而且在響應不包含原來的真實IP地址,但是多了HTTP_PROXY_CONNECTION,能判斷出使用了代理,得出結論此瀏覽器客戶端使用了匿名代理。

  ④. 通過linux curl命令使用http高匿名代理訪問:
1
2
3
4
5
[root@aiezu.com ~] # curl -x 114.232.1.13:8088 http://aiezu.com/test.php
Array
(
     [REMOTE_ADDR] => 114.232.1.13
)
  這次我們驚奇的發現,REMOTE_ADDR同樣變成了代理的IP地址,同時不留下任何殘留證據證明使用了代理,可以得出結論,這就是傳說中的高匿名代理。
  
  ④. 通過linux curl命令使用socks5代理訪問:
1
2
3
4
5
[root@aiezu.com ~] # curl --socks5 122.192.32.76:7280 http://aiezu.com/test.php
Array
(
     [REMOTE_ADDR] => 180.96.54.198
)
  可以看出此SOCKS5代理也是高匿名代理。


免責聲明!

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



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