首页 > 解决方案 > PHP防止代理覆盖标头

问题描述

我想使用 curl访问dnsserver.icu通过此代理托管的 PHP 脚本。207.154.231.211:8080

问题是代理服务器似乎确实用302代码覆盖了 HTTP 200代码,从而无法访问脚本。

curl -v dnsserver.icu给出以下输出:

* Rebuilt URL to: dnsserver.icu/
*   Trying 134.122.73.150...
* TCP_NODELAY set
* Connected to dnsserver.icu (134.122.73.150) port 80 (#0)
> GET / HTTP/1.1
> Host: dnsserver.icu
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Wed, 15 Apr 2020 20:05:18 GMT
< Server: Apache/2.4.29 (Ubuntu)
< Content-Length: 31
< Content-Type: text/html; charset=UTF-8
<
* Connection #0 to host dnsserver.icu left intact

curl -v -x 207.154.231.211:8080 dnsserver.icu给出了意想不到的结果:

* Rebuilt URL to: dnsserver.icu/
*   Trying 207.154.231.211...
* TCP_NODELAY set
* Connected to 207.154.231.211 (207.154.231.211) port 8080 (#0)
> GET http://dnsserver.icu/ HTTP/1.1
> Host: dnsserver.icu
> User-Agent: curl/7.58.0
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 302 Found
< Location: http://206.189.153.135
< Date: Wed, 15 Apr 2020 20:08:37 GMT
< Connection: keep-alive
< Transfer-Encoding: chunked
<
* Connection #0 to host 207.154.231.211 left intact

Location 标头中的地址有时也会发生变化。

我已经尝试过不同的标头配置,但我无法让它工作。当我记录对 PHP 脚本的每次调用时,看起来代理甚至都没有访问服务器(没有记录调用)。此外,apache 访问日志为空。

奇怪的是,并非所有域都如此。我可以通过代理访问 eg或不太流行的域ip-api.com,例如(但不是 45.33.35.141 的 ip 等价物)。google.comproxyjudge.us

我不知道这种行为的原因是什么。在标头设置或 apache 配置方面是否有任何“技巧”可以dnsserver.icu通过此代理进行访问?有什么我没有坚持的吗?

我很感激任何帮助。

标签: apachecurlproxy

解决方案


推荐阅读