PHP cUrl - 发布数据不通过代理

时间:2011-09-12 10:28:19

标签: php curl login proxy

我使用此代码登录远程服务器。当我不使用代理时,Evrything正常工作。但是使用代理却没有。

这是代码:

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  curl_setopt($ch, CURLOPT_USERAGENT, $agent);
  curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);


  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_REFERER, $ref_url);


  curl_setopt($ch, CURLOPT_HEADER, FALSE);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
  curl_setopt($ch, CURLOPT_PROXY, $proxy.':'.$port);
  ob_start();

  return curl_exec ($ch); // execute the curl command
  ob_end_clean();
  curl_close ($ch);
  unset($ch);

我尝试禁用CURLOPT_HTTPPROXYTUNNEL,但没有帮助。

所以,没有代理我可以正常登录。 没有代理。 代理是一个很好的广告工作。

2 个答案:

答案 0 :(得分:0)

使用您发布的代码获得的代理错误是什么?代理是否需要身份验证?

答案 1 :(得分:0)

我遇到了同样的问题,代码在没有代理的情况下工作正常,但是它没有返回任何内容 ,我做了一些调试,发现实际上在大多数服务器上只允许端口80,我们使用的许多代理通过另一个端口连接

  • 您可以取消阻止您拥有最多代理的端口号
  • 您只能使用端口80代理
  • 过滤列表

注意:也只使用端口http,https和socks4代理,socks5代理在udp上运行而不是在tcp / ip上