【问题标题】:Using PHP cURL with an HTTP Debugging Proxy将 PHP cURL 与 HTTP 调试代理一起使用
【发布时间】:2010-12-11 22:34:01
【问题描述】:

我正在使用“Fiddler”应用程序通过 PHP cURL 调试对网站的 GET 尝试。为了查看 cURL 流量,我必须指定 cURL 连接使用 Fiddler 代理(参见下面的代码)。

$ch = curl_init();

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888'); 

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_REFERER, "http://domain.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_URL, "http://domain.com");

$response = curl_exec($ch);

但问题是在 Fiddler 中我只能看到这个:

请求(domain.com 只是一个别名):

  CONNECT domain.com:80 HTTP/1.1

回复:

  HTTP/1.1 200 Blind-Connection Established

如果我在浏览器中手动加载网站,Fiddler 会给我更多信息。我可以看到 cookie、标头信息以及我通过 GET 接收到的内容。

任何想法为什么 Fiddler 无法从 PHP cURL 中看到更多有用的信息?

编辑:我尝试在 Tools / Fiddler Options / HTTPS 中打开“启用 HTTPS 解密”选项(我不知道为什么我需要使用,因为我没有告诉cURL 使用 HTTPS)。

不幸的是,通过更改此设置,我现在得到以下响应:

HTTP/1.1 502 Connection failed

编辑:如果有帮助,“Charles”应用会比 Fiddler 向我显示更多信息,但我真的很想弄清楚 Fiddler,因为我更喜欢它。

【问题讨论】:

  • 对不起,我完全错过了你在这里没有使用 SSL 的事实。除非您实际使用 SSL 流量,否则没有理由使用 CONNECT 隧道。

标签: php http proxy curl fiddler


【解决方案1】:

“已建立盲连接”表示您尚未打开工具/Fiddler 选项/HTTPS 中的“启用 HTTPS 解密”选项。

【讨论】:

  • 谢谢埃里克!不幸的是,打开该设置后,响应是“HTTP/1.1 502 Connection failed”。
  • CURLOPT_HTTPPROXYTUNNEL 并没有像你想象的那样做。如果你不设置它,只设置 CURLOPT_PROXY,它应该可以正常工作。
猜你喜欢
  • 2016-10-31
  • 2014-03-06
  • 2015-07-22
  • 2019-12-18
  • 2011-07-06
  • 1970-01-01
  • 2012-11-06
  • 2016-07-16
  • 2013-05-27
相关资源
最近更新 更多