Curl 代理相关

2020-12-11  本文已影响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;若未完整设置,会自动补全,如:

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 头部报文给代理服务器。


如果代理服务不是通过 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
实际发送给代理服务器的头部信息选项:

上一篇 下一篇

猜你喜欢

热点阅读