Curl 代理相關(guān)

CURLOPT_HTTPPROXYTUNNEL
啟用 HTTP 代理通道,針對(duì) HTTP 代理服務(wù)器。
在未啟用時(shí)

Curl 將 method/header/body 等 Request 請(qǐng)求愿意發(fā)送給代理服務(wù)器,就像直接請(qǐng)求目標(biāo)服務(wù)器一樣 -> 代理服務(wù)器接收 Request 完畢后,原樣請(qǐng)求目標(biāo)服務(wù)器獲得 Response header/body -> 原樣返回給 Curl

啟用后

Curl 使用 Connect method 連接到代理服務(wù)器并告知目標(biāo)服務(wù)器 -> 代理服務(wù)器打開一個(gè)連接到目標(biāo)服務(wù)器的TCP 通道 -> Curl 通過(guò)代理服務(wù)器的 TCP 通道使用協(xié)議發(fā)送請(qǐng)求并接收請(qǐng)求。

可以看到,還是有很大區(qū)別的,啟用代理通道,可以通過(guò) HTTP 代理服務(wù)器發(fā)送 FTP 、SSH 等以 TCP 為基礎(chǔ)的協(xié)議,考慮到 Curl 一般用來(lái)處理 HTTP 請(qǐng)求,一般不開啟此選項(xiàng)。


CURLOPT_PROXY
代理服務(wù)器地址,默認(rèn)協(xié)議為 HTTP,端口 1080;若未完整設(shè)置,會(huì)自動(dòng)補(bǔ)全,如:

  • 127.0.1.1 (僅設(shè)置地址,相當(dāng)于 http://127.0.0.1:1080
  • 127.0.1.1:8118 (地址+端口,相當(dāng)于 http://127.0.0.1:8118
  • http://127.0.1.1 (協(xié)議+地址,相當(dāng)于 http://127.0.0.1:1080
  • socks5://127.0.1.1 (協(xié)議+地址,相當(dāng)于 socks5://127.0.0.1:1080
  • socks5://127.0.1.1:8118 (完整設(shè)置)

CURLOPT_PROXYTYPE
若在代理地址中未設(shè)置 “協(xié)議”,可通過(guò)該選項(xiàng)設(shè)置。
CURLPROXY_HTTP (默認(rèn)值) CURLPROXY_SOCKS4、 CURLPROXY_SOCKS5、 CURLPROXY_SOCKS4ACURLPROXY_SOCKS5_HOSTNAME

CURLOPT_PROXYPORT
若在代理地址中未設(shè)置 “端口”,可通過(guò)該選項(xiàng)設(shè)置。

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


CURLOPT_PROXYAUTH 、CURLOPT_PROXYUSERPWD
代理服務(wù)器認(rèn)證設(shè)置,通過(guò)該設(shè)置,會(huì)發(fā)送 Proxy-Authorization 頭部報(bào)文給代理服務(wù)器。

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

如果代理服務(wù)不是通過(guò) BASICNTLM 類型的 Authorization 驗(yàn)證,或者還需要其他頭部信息,就需要自定義了。

相關(guān)配置:CURLOPT_HTTPHEADER、CURLOPT_PROXYHEADER 、CURLOPT_HEADEROPT

CURLOPT_HTTPHEADER
發(fā)送給請(qǐng)求目標(biāo)的頭部信息,數(shù)組形式,如 ['Content-Type: text/plain', 'Content-Length: 100']

CURLOPT_PROXYHEADER
發(fā)送給代理服務(wù)器的頭部信息,數(shù)組形式,如 ['Proxy-Foo: foo', 'Proxy-Bar: bar',]

CURLOPT_HEADEROPT
實(shí)際發(fā)送給代理服務(wù)器的頭部信息選項(xiàng):

  • CURLHEADER_UNIFIED: 設(shè)置為該值,將忽略 CURLOPT_PROXYHEADER 設(shè)置,而是發(fā)送 CURLOPT_HTTPHEADER 頭部給代理服務(wù)器;若設(shè)置了 CURLOPT_PROXYUSERPWD,并未額外發(fā)送 Proxy-Authorization 給代理服務(wù)器(此首部不會(huì)發(fā)送給請(qǐng)求目標(biāo))

  • CURLHEADER_SEPARATE:僅發(fā)送 CURLOPT_PROXYHEADER 給代理服務(wù)器,若未設(shè)置該項(xiàng),則不發(fā)送;CURLOPT_HTTPHEADER 將僅發(fā)送給請(qǐng)求目標(biāo)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容