简体   繁体   中英

PHP cUrl - post data doesn't go through proxy

I use this code to login to remote server. Evrything working fine when I don't use proxy. But with proxy it doesn't.

Here is code:

  $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);

I try to disable CURLOPT_HTTPPROXYTUNNEL but it didn't help.

So, without proxy I can login fine. With proxy not. Proxy is good ad working.

I was having a same problem , the code works fine without the proxy but with it its returning nothing , I have done some debugging and found out that actually on most of the servers only the port 80 is allowed , and many of the proxies we use connect through another port

  • You can unblock the port no for which you have maximum proxies
  • You can filter the list with only port 80 proxies

Note : Also only use port http, https and socks4 proxies , socks5 proxies runs on udp not on tcp/ip

What's the proxy error you get using the code you posted? Does the proxy need authentication?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM