XTLS / Xray-core

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.
https://t.me/projectXray
Mozilla Public License 2.0
24.35k stars 3.82k forks source link

关于 http 代理的请求头伪装 #1148

Closed loveqianool closed 4 months ago

loveqianool commented 2 years ago

这个 http 代理会验证 UA,使用 xray 的 http 伪装发现它会发出两条连接,第一条成功修改了 UA,但是第二条又变回了默认的 Go-http-client/1.1,请问有没有办法把第二条的 UA 也一起伪装了。

微信截图_20220720183935 微信截图_20220720183949

使用下面的配置文件

{
  "log": {
    "loglevel": "info"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": "10808",
      "protocol": "socks"
    }
  ],
  "outbounds": [
    {
      "protocol": "http",
      "settings": {
        "servers": [
          {
            "address": "14.215.179.244",
            "port": 443
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "tcpSettings": {
          "header": {
            "type": "http",
            "request": {
              "headers": {
                "Host": [
                  "www.bing.com"
                ],
                "User-Agent": [
                  "baiduboxapp"
                ]
              }
            }
          }
        }
      },
      "tag": "proxy"
    }
  ]
}
xqzr commented 2 years ago

https://xtls.github.io/config/transports/tcp.html#tcpobject

loveqianool commented 2 years ago

https://xtls.github.io/config/transports/tcp.html#tcpobject

https://xtls.github.io/config/transports/tcp.html#httprequestobject

loveqianool commented 2 years ago

使用 curl -v -A baiduboxapp --proxy 14.215.179.244:443 myip.ipip.net 可以验证这个代理还是可以使用的

loveqianool commented 2 years ago

@yuhan6665 大佬是否有关注到此问题,有计划修正这个问题吗?

yuhan6665 commented 2 years ago

似乎是一个可信的 bug 加个 tag 等有缘大佬。。

Fangliding commented 5 months ago

很明显它只处理头不处理后续

yuhan6665 commented 4 months ago

既然是我们发出的 connect 应该可以改 看了一下可能是这个地方 https://github.com/XTLS/Xray-core/blob/1593677b090e7e5684d075b43e5cac106621402e/proxy/http/client.go#L251

Fangliding commented 4 months ago

有没有一种可能http代理的header(include ua)是可以自定义的() https://xtls.github.io/config/outbounds/http.html#serverobject

  "headers": {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
    "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"
  }
Fangliding commented 4 months ago

这个tcp的伪装 真的就是 发个包 意思一下 后面的部分肯定是对应协议的dialer再处理了 这是http代理刚好发的也是 http头 所以会给人一种 未按预期发送的行为 比如如果这里的出站的vmess后面直接就是乱码的vmess数据了