gpt4 book ai didi

curl - curl 选项 CURLOPT_HTTPPROXYTUNNEL 是什么意思?

转载 作者:行者123 更新时间:2023-12-02 11:08:56 27 4
gpt4 key购买 nike

在 cURL 文档中,有一个名为 CURLOPT_HTTPPROXYTUNNEL 的选项它被定义为在启用时通过代理创建隧道。

但是,我不知道隧道是什么以及它有什么作用。如果我不使用这样的隧道会有什么不同?

curl_setopt($session, CURLOPT_HTTPPROXYTUNNEL, 1) 

更新:

我得到的是隧道引用了一个HTTP CONNECT METHOD,这是我所理解的:

基于 HTTP 的隧道方法使用 HTTP CONNECT 方法/命令。客户端向 HTTP 代理发出 HTTP CONNECT 命令。然后,代理与特定服务器:端口建立 TCP 连接,并在该服务器:端口和客户端连接之间中继数据。由于这会产生安全漏洞,因此支持 CONNECT 的 HTTP 代理通常会限制对 CONNECT 方法的访问。代理仅允许访问特定授权服务器的白名单。

那么,问题是,使用和不使用 CONNECT 方法连接到代理有什么区别?

最佳答案

没有CURLOPT_HTTPPROXYTUNNEL

没有CURLOPT_HTTPPROXYTUNNEL:您只需使用代理地址/端口作为 HTTP 请求的目标。代理将读取您查询的 HTTP header ,将您的请求转发到目的地(带有您的 HTTP header ),然后将响应写入给您。

示例步骤:

  1. HTTP GET/index.html 发送到 1.1.1.1(代理)
  2. 1.1.1.1 接收请求并解析 header 以获取 HTTP 请求的最终目的地。
  3. 1.1.1.1 将您的查询和 header 转发到 www.site.com(请求 header 中的目的地)
  4. 1.1.1.1将从www.site.com收到的回复写回给您

使用CURLOPT_HTTPPROXYTUNNEL

使用 CURLOPT_HTTPPROXYTUNNEL :您要求代理通过执行 CONNECT 打开直接到目的地的直接二进制连接(如 HTTPS,称为 TCP 隧道) HTTP 请求。当隧道正常时,代理会向您回写 HTTP/1.1 200 Connectionbuilt。当它收到你的浏览器开始直接查询目的地:代理不解析HTTP header ,理论上不读取隧道数据,它只是转发它,这就是为什么它被称为隧道!

示例步骤:

  1. HTTP CONNECT 发送到 1.1.1.1
  2. 1.1.1.1 接收 HTTP CONNECT 并获取最终目的地的 IP/端口(HTTP CONNECT< 的 header 字段)/)。
  3. 1.1.1.1 通过与目标 2.22.63.73:80 (ip/www.site.com 端口)
  4. 1.1.1.1 通过将 TCP Socket 通过管道连接到打开 2.22.63.73:80< 的 TCP Socket 来创建隧道 然后写回 HTTP/1.1 200 Connectionbuilt 这意味着您的客户端现在可以让您的查询抛出 TCP 隧道(收到的 TCP 数据将直接传输到服务器,反之亦然)。

关于curl - curl 选项 CURLOPT_HTTPPROXYTUNNEL 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com