美文网首页
Curl 代理相关

Curl 代理相关

作者: 马六甲的笔记 | 来源:发表于2020-12-11 00:24 被阅读0次

CURLOPT_HTTPPROXYTUNNEL
启用 HTTP 代理通道,针对 HTTP 代理服务器。
在未启用时

Curl 将 method/header/body 等 Request 请求愿意发送给代理服务器,就像直接请求目标服务器一样 -> 代理服务器接收 Request 完毕后,原样请求目标服务器获得 Response header/body -> 原样返回给 Curl

启用后

Curl 使用 Connect method 连接到代理服务器并告知目标服务器 -> 代理服务器打开一个连接到目标服务器的TCP 通道 -> Curl 通过代理服务器的 TCP 通道使用协议发送请求并接收请求。

可以看到,还是有很大区别的,启用代理通道,可以通过 HTTP 代理服务器发送 FTP 、SSH 等以 TCP 为基础的协议,考虑到 Curl 一般用来处理 HTTP 请求,一般不开启此选项。


CURLOPT_PROXY
代理服务器地址,默认协议为 HTTP,端口 1080;若未完整设置,会自动补全,如:

  • 127.0.1.1 (仅设置地址,相当于 http://127.0.0.1:1080
  • 127.0.1.1:8118 (地址+端口,相当于 http://127.0.0.1:8118
  • http://127.0.1.1 (协议+地址,相当于 http://127.0.0.1:1080
  • socks5://127.0.1.1 (协议+地址,相当于 socks5://127.0.0.1:1080
  • socks5://127.0.1.1:8118 (完整设置)

CURLOPT_PROXYTYPE
若在代理地址中未设置 “协议”,可通过该选项设置。
CURLPROXY_HTTP (默认值) CURLPROXY_SOCKS4CURLPROXY_SOCKS5CURLPROXY_SOCKS4ACURLPROXY_SOCKS5_HOSTNAME

CURLOPT_PROXYPORT
若在代理地址中未设置 “端口”,可通过该选项设置。

比如:
CURLOPT_PROXY=127.0.0.1 + CURLOPT_PROXYTYPE=CURLPROXY_SOCKS5 + CURLOPT_PROXYPORT=8118 = socks5://127.0.0.1:8118


CURLOPT_PROXYAUTHCURLOPT_PROXYUSERPWD
代理服务器认证设置,通过该设置,会发送 Proxy-Authorization 头部报文给代理服务器。

  • CURLOPT_PROXYAUTH 支持:CURLAUTH_BASICCURLAUTH_NTLM
  • CURLOPT_PROXYUSERPWD 格式: [username]:[password]

如果代理服务不是通过 BASICNTLM 类型的 Authorization 验证,或者还需要其他头部信息,就需要自定义了。

相关配置:CURLOPT_HTTPHEADERCURLOPT_PROXYHEADERCURLOPT_HEADEROPT

CURLOPT_HTTPHEADER
发送给请求目标的头部信息,数组形式,如 ['Content-Type: text/plain', 'Content-Length: 100']

CURLOPT_PROXYHEADER
发送给代理服务器的头部信息,数组形式,如 ['Proxy-Foo: foo', 'Proxy-Bar: bar',]

CURLOPT_HEADEROPT
实际发送给代理服务器的头部信息选项:

  • CURLHEADER_UNIFIED: 设置为该值,将忽略 CURLOPT_PROXYHEADER 设置,而是发送 CURLOPT_HTTPHEADER 头部给代理服务器;若设置了 CURLOPT_PROXYUSERPWD,并未额外发送 Proxy-Authorization 给代理服务器(此首部不会发送给请求目标)

  • CURLHEADER_SEPARATE:仅发送 CURLOPT_PROXYHEADER 给代理服务器,若未设置该项,则不发送;CURLOPT_HTTPHEADER 将仅发送给请求目标。

相关文章

网友评论

      本文标题:Curl 代理相关

      本文链接:https://www.haomeiwen.com/subject/erjsgktx.html