Linux curl命令使用代理、以及代理种类介绍(转)
Linux curl命令使用代理、以及代理种类介绍
代理服务器(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.phpcurl --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.phpcurl -x 113.185.19.192:80 -U aiezu:123456 http://aiezu.com/test.phpcurl -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.phpcurl -x socks4://122.192.32.76:7280 http://aiezu.com/test.php#使用socks4a代理,无需认证方式curl --socks4a 122.192.32.76:7280 http://aiezu.com/test.phpcurl -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.phpcurl -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.phpArray( [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.phpArray( [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.phpArray( [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.phpArray( [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.phpArray( [REMOTE_ADDR] => 180.96.54.198) |
可以看出此SOCKS5代理也是高匿名代理。
Linux curl命令使用代理、以及代理种类介绍(转)的更多相关文章
- (转)Linux curl命令参数详解
Linux curl命令参数详解 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...
- Linux curl 命令详解
命令概要 该命令设计用于在没有用户交互的情况下工作. curl 是一个工具,用于传输来自服务器或者到服务器的数据.「向服务器传输数据或者获取来自服务器的数据」 可支持的协议有(DICT.FILE.FT ...
- Linux curl 命令模拟 POST/GET 请求
Linux curl 命令模拟 POST/GET 请求 本文链接:https://blog.csdn.net/sunboy_2050/article/details/82156402 curl 命 ...
- linux curl命令:curl: (7) couldn't connect to host ?
linux curl命令:curl: (7) couldn't connect to host ? 使用linux命令 curl http://www.test.com 出现如下错误:curl: (7 ...
- linux curl 命令详解,以及实例
linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具. 一,curl命令参数,有好多我没有用过,也不知道翻 ...
- Linux curl命令参数详解
笔者出处:http://www.aiezu.com/system/linux/linux_curl_syntax.html linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支 ...
- Linux curl命令参数详解--转载
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 一.Linux ...
- Linux curl命令参数详解(6/23)
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 在Linux中c ...
- Linux curl命令详解
用途说明 curl命令是一个功能强大的网络工具,它能够通过http.ftp等方式下载文件,也能够上传文件.其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息.类 ...
随机推荐
- 通过ping命令查看服务器是linux还是windows系列
通过ping命令识别服务器类型
- scrapy 基础使用以及错误方案
原先用的是selenium(后面有时间再写),这是第一次使用scrapy这个爬虫框架,所以记录一下这个心路历程,制作简单的爬虫其实不难,你需要的一般数据都可以爬取到. 下面是我的目录,除了main.p ...
- jquery.zclip.js粘贴功能
jquery的粘贴插件: 如下是代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...
- VS2017 cdkey
Enterprise:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF ProfessionalKBJFW-NXHK6-W4WJM-CRMQB-G3CDH
- P1182 数列分段`Section II` P1316 丢瓶盖 二分答案
题目描述 对于给定的一个长度为N的正整数数列A-iA−i,现要将其分成M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列4 2 4 5 142451要分成 ...
- 深入理解Python中赋值、深拷贝(deepcopy)、浅拷贝(copy)
赋值 python跟java中的变量本质是不一样的,Python的变量实质上是一个指针(int型或str型),而java的变量是一个可操作的存储空间. a = 123b = a print(id(a) ...
- 从小白到区块链工程师:第一阶段:Go语言的HelloWorld初始(2)
四.写下第一段Go语言代码“Hello World” 小建议:就是文件夹路径或者文件名称不要出现中文,可能会导致一些不必要的麻烦(编译失败) 在sublime中,我们在src文件夹上面,单击右键“Ne ...
- BZOJ.1132.[POI2008]Tro(极角排序)
BZOJ 洛谷 考虑暴力,每次枚举三个点,答案就是\(\frac12\sum_{k<j<i}(i-k)\times(j-k)\). 注意到叉积有分配率,所以固定\(k\),枚举\(i,j\ ...
- BZOJ.1805.[IOI2007]sail船帆(贪心 线段树)
BZOJ 洛谷 首先旗杆的顺序没有影响,答案之和在某一高度帆的总数有关.所以先把旗杆按高度排序. 设高度为\(i\)的帆有\(s_i\)个,那么答案是\(\sum\frac{s_i(s_i-1)}{2 ...
- C# 网络编程之基于SMTP发送电子邮件
本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议).POP3(邮局协议).IMAP(Internet邮件访问协议),文章主要 ...