Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)
目录
一、代理服务器分类:
二、Linux curl命令代理设置参数:
三、Linux curl命令设置代理举例:
1、linux curl命令设置http代理:
2、Linux curl命令设置socks代理:
四、测试代理的隐匿度:
1、测试前准备:
2、测试使用不同代理输出结果:
五、附录:
CURL命令详解
有时出于个人隐私的原因,我们希望隐藏自己的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代理:
# 指定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代理:
#使用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"测试页的代码如下:
<?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不使用代理访问:
[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透明代理访问:
[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匿名代理访问:
[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高匿名代理访问:
[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代理访问:
[root@aiezu.com ~]# curl --socks5 122.192.32.76:7280 http://aiezu.com/test.php
Array
([REMOTE_ADDR] => 180.96.54.198
)
可以看出此SOCKS5代理也是高匿名代理。
五、附录:
- Linux curl命令详解
感谢原创作者:http://aiezu.com/article/linux_curl_proxy_http_socks.html
CURL命令详解
curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;
curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
一、curl命令语法:
curl [options] [URL...]
二、curl命令参数详解:
由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。
参数组 | 参数 | 描述 |
---|---|---|
url | url |
需要抓取的一到多个URLs; 多个下面通配符的方式: 1、http://{www,ftp,mail}.aiezu.com; 2、http://aiezu.com/images/[001-999].jpg; 3、http://aiezu.com/images/[1-999].html; 4、ftp://aiezu.com/file[a-z].txt |
请 求 头 |
-H "name: value" --header "name: value" |
(HTTP)添加一个http header(http请求头); |
-H "name:" --header "name:" |
(HTTP)移除一个http header(http请求头); | |
-A "string" --user-agent "string" 【参考】 |
(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。 也可以使用“-H”, “--header option”设置此选项; |
|
-e <URL> --referer <URL> 【参考】 |
(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面; -e "aiezu.com"相当于“-H "Referer: www.qq.com"”; |
|
响 应 头 |
-I --head |
(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。 用于HTTP服务时,获取页面的http头; (如:curl -I http://aiezu.com) 用于FTP/FILE时,将会获取文件大小、最后修改时间; (如:curl -I file://test.txt) |
-i --include |
(HTTP)输出HTTP头和返回内容; | |
-D <file> --dump-header <file> |
(HTTP)转储http响应头到指定文件; | |
cookie |
-b name=data --cookie name=data 【参考】 |
(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";
如果行中没有“=”,将把参数值当作cookie文件名; 这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的; |
-c filename --cookie-jar file name 【参考】 |
(HTTP)完成操作后将服务器返回的cookies保存到指定的文件; 指定参数值为“-”将定向到标准输出“如控制台”; |
|
-j --junk-session-cookies |
(HTTP)告诉curl放弃所有的"session cookies"; 相当于重启浏览器; |
|
代理 |
-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" |
-p --proxytunnel |
将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp; | |
--socks4 <host[:port]> --socks4a <host[:port]> --socks5 <host[:port]> 【参考】 |
使用SOCKS4代理; 使用SOCKS4A代理; 使用SOCKS5代理; 此参数会覆盖“-x”参数; |
|
--proxy-anyauth --proxy-basic --proxy-diges --proxy-negotiate --proxy-ntlm |
http代理认证方式,参考: --anyauth --basic --diges --negotiate --ntlm |
|
-U <user:password> --proxy-user <user:password> |
设置代理的用户名和密码; | |
数据 传输 |
-G --get 【参考】 |
如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; |
-d @file -d "string" --data "string" --data-ascii "string" --data-binary "string" --data-urlencode "string" 【参考】 |
(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded") -d,--data:HTTP方式POST数据; --data-ascii:HTTP方式POST ascii数据; --data-binary:HTTP方式POST二进制数据; --data-urlencode:HTTP方式POST数据(进行urlencode); 如果数据以“@”开头,后紧跟一个文件,将post文件内的内容; |
|
-F name=@file -F name=<file -F name=content --form name=content 【参考】 |
(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。
如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如: 如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com; |
|
--form-string <key=value> | (HTTP)类似于“--form”,但是“@”、“<”无特殊含义; | |
-T file --upload-file file |
通过“put”的方式将文件传输到远程网址;
选项参数只使用字符"-",将通过stdin读入文件内容; 此参数也可以使用通配符: |
|
断点 续传 |
-C <offset> --continue-at <offset> |
断点续转,从文件头的指定位置开始继续下载/上传; offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输; |
-r <range> --range <range> |
(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分: 0-499:最前面500字节; -500:最后面500字节; 9500-:最前面9500字节; 0-0,-1:最前面和最后面的1字节; 100-199,500-599:两个100字节; |
|
认证 |
--basic | (HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式; |
--ntlm |
(HTTP)使用NTLM身份验证方式,用于HTTP协议; 一般用于IIS使用NTLM的网站; |
|
--digest |
(HTTP)使用HTTP Digest authentication加密,用于HTTP协议; 配合“-u/--user”选项,防止密码使用明文方式发送; |
|
--negotiate |
(HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议; 它主要目的是为它的主要目的是为kerberos5认证提供支持支持; |
|
--anyauth | (HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式; | |
-u user:password --user user:password |
使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;
如果你只提供用户名,curl将要求你输入密码; 如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证; 此参数相当于设置http头“Authorization:”; |
|
证书 |
-E <证书[:密码]> --cert <证书[:密码]> |
(SSL)指定“PEM”格式的证书文件和证书密码; |
--cert-type <type> |
(SSL)告诉curl所提供证书的类型:PEM、DER、ENG等; 默认为“PEM”; |
|
--cacert <CA证书> | (SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式; | |
--capath <CA证书路径> |
(SSL)告诉curl所以指定目录下的CA证书用来验证; 这些证书必须是“PEM”格式; |
|
--crlfile <file> | (HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表; | |
-k --insecure |
(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。 | |
SSL 其他 |
--ciphers <list of ciphers> | (SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”; |
--engine <name> |
设置一个OpenSSL加密引擎用于加密操作; 使用“curl --engine list”查看支持的加密引擎列表; |
|
--random-file | (SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为; | |
--egd-file <file> | (SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名; | |
-1/--tlsv1 --tlsv1.0 --tlsv1.1 --tlsv1.2 -2/--sslv2 -3/--sslv3 |
(SSL)使用TLS版本2与远程服务器通讯; (SSL)使用TLS 1.0版本与远程服务器通讯; (SSL)使用TLS 1.1版本与远程服务器通讯; (SSL)使用TLS 1.2版本与远程服务器通讯; (SSL)使用SSL版本2与远程服务器通讯; (SSL)使用SSL版本3与远程服务器通讯; |
|
私钥 公钥 |
--key <key> | (SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”; |
--key-type <type> | (SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM; | |
--pass <phrase> | (SSL/SSH)指定私钥文件的密码; | |
--pubkey <key> | (SSH)使用指定文件提供的您公钥; | |
FTP |
-P --ftp-port <接口> |
(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如: 网卡:eth1 IP:8.8.8.8 主机名:aiezu.com 可以加端口号:eth1:20000-21000; |
--crlf | (FTP)上传时将换行符(LF)转换为回车换行(CRLF); | |
--ftp-account [data] | (FTP)ftp帐号信息; | |
--ftp-method [method] | (FTP)可选值:multicwd/nocwd/singlecwd; | |
--ftp-pasv | (FTP)使用使用PASV(被动)/EPSV模式; | |
--ftp-skip-pasv-ip | (FTP)使用PASV的时,跳过指定IP; | |
--ftp-create-dirs | (FTP)上传时自动创建远程目录; | |
-l --list-only |
(FTP)列出ftp文件列表; | |
-B --use-ascii |
(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。 | |
--disable-epsv | (FTP)告诉curl在PASV(被动模式)时不要使用EPSV; | |
--disable-eprt | (FTP)告诉curl在主动模式时禁用EPRT和LPRT; | |
限速 | --limit-rate <speed> | 限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”; |
-y --speed-time <time> |
If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y. This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option. |
|
-Y --speed-limit <speed> |
If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set. | |
其他 选项 |
-0/--http1.0 | (HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1; |
--interface <name> |
使用指定的网卡接口访问; curl --interface eth0 http://aiezu.com curl --interface 10.0.0.101 http://aiezu.com |
|
-X <command> --request <command> |
(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET; | |
--keepalive-time <seconds> | 设置keepalive时间 | |
--no-keepalive | 关闭keepalive功能; | |
--no-buffer | 禁用对输出流缓冲; | |
--buffer | 启用输出流缓冲; | |
-L --location |
(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面; (在http响应码为3XX时使用,如301跳转、302跳转) |
|
--location-trusted | (HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码; | |
--compressed | (HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压; | |
--connect-timeout <seconds> | 指定最大连接超时,单位“秒”; | |
-m seconds --max-time seconds |
限制整个curl操作的最长时间,单位为秒; | |
-s --silent |
安静模式。不要显示进度表或错误消息; | |
-# --progress-bar |
显示进度条; | |
错误 选项 |
-f --fail |
(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”; |
--retry <num> --retry-delay <seconds> --retry-max-time <seconds> |
失败重试次数; 重试间隔时间; 最大重试时间; |
|
-S --show-error |
安静模式下显示错误信息; | |
--stderr <file> | 错误信息保存文件; | |
输出 |
-o file --output file |
将返回内容输出到文件。 如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如: curl "http://aiezu.com/{a,b}.txt" -o "#1.txt"; 将保存为:“a.txt”,“b.txt”; curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt"; 如果要根据规则创建保存目录,参考:“--create-dirs” 指定“-”将定向到标准输出“如控制台”; |
-O --remote-name |
将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录); | |
--create-dirs | 与“-o”参数配合使用,创建必要的本地目录层次结构 | |
-w --write-out format |
操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”
格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取; 格式参数可以使用“\n”、“\r”、“\t”等转义字符; |
|
调试 | --trace <file> |
转储所有传入和传出的数据到文件,包括描述信息; 使用“-”作为文件名将输出发送到标准输出。 |
--trace-ascii file |
转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读; 使用“-”作为文件名将输出发送到标准输出。 这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项; |
|
--trace-time | 转储文件中添加时间信息; | |
-K --config <config file> |
从配置文件中读取参数,参考:http://curl.haxx.se/docs/ | |
-v --verbose |
显示更详细的信息,调试时使用; | |
帮助 |
-M --manual |
显示完整的帮助手册; |
-h --help |
linux curl用法帮助; |
三、Linux curl命令退出码:
下面是linux curl命令的错误代码和她们的相应的错误消息,可能会出现在恶劣的环境。
退出码 | 错误描述 |
---|---|
1 | Unsupported protocol. This build of curl has no support for this protocol. |
2 | Failed to initialize. |
3 | URL malformed. The syntax was not correct. |
5 | Couldn't resolve proxy. The given proxy host could not be resolved. |
6 | Couldn't resolve host. The given remote host was not resolved. |
7 | Failed to connect to host. |
8 | FTP weird server reply. The server sent data curl couldn't parse. |
9 | FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server. |
11 | FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request. |
13 | FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request. |
14 | FTP weird 227 format. Curl couldn't parse the 227-line the server sent. |
15 | FTP can't get host. Couldn't resolve the host IP we got in the 227-line. |
17 | FTP couldn't set binary. Couldn't change transfer method to binary. |
18 | Partial file. Only a part of the file was transferred. |
19 | FTP couldn't download/access the given file, the RETR (or similar) command failed. |
21 | FTP quote error. A quote command returned error from the server. |
22 | HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used. |
23 | Write error. Curl couldn't write data to a local filesystem or similar. |
25 | FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading. |
26 | Read error. Various reading problems. |
27 | Out of memory. A memory allocation request failed. |
28 | Operation timeout. The specified time-out period was reached according to the conditions. |
30 | FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead! |
31 | FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers. |
33 | HTTP range error. The range "command" didn't work. |
34 | HTTP post error. Internal post-request generation error. |
35 | SSL connect error. The SSL handshaking failed. |
36 | FTP bad download resume. Couldn't continue an earlier aborted download. |
37 | FILE couldn't read file. Failed to open the file. Permissions? |
38 | LDAP cannot bind. LDAP bind operation failed. |
39 | LDAP search failed. |
41 | Function not found. A required LDAP function was not found. |
42 | Aborted by callback. An application told curl to abort the operation. |
43 | Internal error. A function was called with a bad parameter. |
45 | Interface error. A specified outgoing interface could not be used. |
47 | Too many redirects. When following redirects, curl hit the maximum amount. |
48 | Unknown TELNET option specified. |
49 | Malformed telnet option. |
51 | The peer's SSL certificate or SSH MD5 fingerprint was not ok. |
52 | The server didn't reply anything, which here is considered an error. |
53 | SSL crypto engine not found. |
54 | Cannot set SSL crypto engine as default. |
55 | Failed sending network data. |
56 | Failure in receiving network data. |
58 | Problem with the local certificate. |
59 | Couldn't use specified SSL cipher. |
60 | Peer certificate cannot be authenticated with known CA certificates. |
61 | Unrecognized transfer encoding. |
62 | Invalid LDAP URL. |
63 | Maximum file size exceeded. |
64 | Requested FTP SSL level failed. |
65 | Sending the data requires a rewind that failed. |
66 | Failed to initialize SSL Engine. |
67 | The user name, password, or similar was not accepted and curl failed to log in. |
68 | File not found on TFTP server. |
69 | Permission problem on TFTP server. |
70 | Out of disk space on TFTP server. |
71 | Illegal TFTP operation. |
72 | Unknown TFTP transfer ID. |
73 | File already exists (TFTP). |
74 | No such user (TFTP). |
75 | Character conversion failed. |
76 | Character conversion functions required. |
77 | Problem with reading the SSL CA cert (path? access rights?). |
78 | The resource referenced in the URL does not exist. |
79 | An unspecified error occurred during the SSH session. |
80 | Failed to shut down the SSL connection. |
82 | Could not load CRL file, missing or wrong format (added in 7.19.0). |
83 | Issuer check failed (added in 7.19.0). |
XX | More error codes will appear here in future releases. The existing ones are meant to never change. |
Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)相关推荐
- Linux--管理LVM逻辑卷 --原理+命令双结合(LVM的概述与建立,LVM的管理命令,LVM的应用步骤,磁盘配额的详解)
Linux--管理LVM逻辑卷 --原理+命令双结合(LVM的概述与建立,LVM的管理命令,LVM的应用步骤,磁盘配额的详解) 前言 一:LVM概述 1.1:PV(Physical Volume,物理 ...
- 寄存器(1)寄存器概念,x86寄存器种类说明及汇编代码详解
寄存器(1)寄存器概念,x86寄存器种类说明及汇编代码详解 1. 什么是寄存器 1.1 概念 1. 什么是寄存器: 2. 寄存器作用: 1.2 通俗易懂理解寄存器 2. x86寄存器种类说明及汇编代码 ...
- Linux系统强制位u+s、g+s、o+t 详解
Linux系统强制位u+s.g+s.o+t 详解 u+s:一个命令,给与用户s权限,则此用户暂时获得这个命令的属主权限 (例chmod u+s /usr/bin/touch或者chmod 4755 / ...
- 转载:linux驱动层到应用层的重要接口sys文件系统---/sys目录详解
linux驱动层到应用层的重要接口sys文件系统---/sys目录详解 Linux2.6内核中引入了sysfs文件系统.sysfs文件系统整理的设备驱动的相关文件节点,被视为dev文件系统的替代者.同 ...
- linux 666权限,linux主机555、644、666、755、777权限详解
linux主机555.644.666.755.777权限详解 发表时间:2014-06-03 05:07 来源:未知 分类:其它代码 作者:岑溪网站开发 点击:次 linux主机555.644.666 ...
- [HTTPD] Linux(Apache)Httpd服务器安装,启动及httpd.conf配置详解
Apache HTTP Server HTTPD简介 Apache HTTP Server(简称Apache或httpd)是Apache软件基金会的一个开放源代码的网页服务器软件,旨在为unix,wi ...
- php curl简单采集图片生成base64编码(并附curl函数参数说明)
许多年前的代码突然拿来一用,特做此笔记(此处的code用来定位内部错误位置,非http code) <?php $url="http://c.hiphotos.baidu.com/im ...
- linux 帐号 配置sftp_Linux 下sftp配置之密钥方式登录详解
Linux下sftp配置之密钥方式登录 由于vsftp采用明文传输,用户名密码可通过抓包得到,为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器.由于sftp使用的是ssh协议,需保证 ...
- Linux系统快速查看CPU和内存使用情况,附各参数详解
Linux系统中查看CPU和内存使用情况,是一个运维工程师常见的事情,下面分享一下. 目 录 1.top命令 2.ps命令 3.free命令 1.top命令 top命令是Linux下常用的性能分析工具 ...
- linux常用的引导管理器,多重引导管理器Grub使用详解
多重引导管理器Grub使用详解 1.问题的提出 目前发行的Linux版本大多用LILO实现多系统引导,但不同版本的LILO有同样的一个问题:根分区(/boot分区)不能分在1024柱面(约8.4GB ...
最新文章
- python3 的range
- Android Activity和Intent机制学习笔记
- 洛谷P1169 棋盘制作(悬线法)
- 自定义Django的admin界面
- 压力不是来自于任务本身,而是任务在大脑中的堵塞,带来的焦虑和心理的抵触(转)...
- MFC 单文档的全局变量
- 看看人家那后端API接口写得,那叫一个巴适~,再看看我的,像坨屎!
- (连通图 模板题 无向图求桥)Critical Links -- UVA -- 796
- Python与C语言的区别是什么?
- corn java 可配置_定时任务工具——CronUtil
- php7 验证url格式,url的组成格式为
- SQL Server中的功能与存储过程
- 基于SSM疫情信息爬取与分析系统
- eclipse远程发布代码的方法(SSH自动同步)
- 董文永武汉大学计算机学院,董文永 - 教师简历 CV- Computer School of Wuhan University...
- 5G NR SSB 学习
- 解决windows 中python打开文本文档乱码问题
- 数论之指标介绍及其应用(基于阶与原根的应用)
- 【JAVA长虹键法】第十式 桥接模式(23种设计模式)
- 怎么的测试用例是一个好的测试用例?
热门文章
- 剑指Offer09-用两个栈实现队列
- js中字符串操作函数
- [洛谷 P3992] [BJOI2017]开车
- 百度分享新浪微博无法分享图片的解决方法
- python中使用%与.format格式化文本
- 微信公众号用户OpenID同步导出系统
- 【神经网络与深度学习】卷积神经网络在自然语言处理的应用
- idea中配置Springboot热部署
- java中关于线程的状态属性_深入理解Java多线程与并发框(第①篇)——线程的状态...
- python四舍五入round_四舍五入就用round( )?Python四舍五入的正确打开方式!-Go语言中文社区...