PHPcurl获取代理

我正在Windows中使用PHP脚本来发出curl请求来成功发出一个SOAP请求,而且我正在试图追查这个成功的请求是如何在C#.NET中进行复制的。

我如何使用PHP来检测curl将要使用哪个代理服务器?

我希望有一个curl_getopt在PHPcurl ,所以我可以做这样的事情:

 curl_getopt(CURLOPT_PROXY); 

但唉,它不存在。

有没有什么办法让我找出哪个代理服务器php curl将通过连接?

你告诉curl使用什么代理,而不是反过来:

 function wget($url) { $options = array( CURLOPT_URL => $url, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, CURLOPT_PROXY => '...proxy.ip...', CURLOPT_PROXYPORT => '...proxy.port...', CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9', ); $ch = curl_init(); curl_setopt_array($ch, $options); $content = curl_exec($ch); $error = curl_error($ch); return (!$error && $content) ? $content : null; } 

2.另一个解决方案>

并看看这个答案> 如何获得一个选项,以前用curl_setopt()设置?

3.重写curl_setopt()函数

http://php.net/manual/en/function.override-function.php

PS你应该可能需要http://php.net/manual/en/function.rename-function.php

4.使用runkit来覆盖函数

http://php.net/manual/en/book.runkit.php

如果它使用与Windows配置相同的,则应该可以像这样找到它(未经测试,因为我没有Windows服务器):

 <?php $proxyserverString = shell_exec('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | find /i "proxyserver"'); $proxyserverString = trim($proxyserverString); /* $proxyserverString should be 'Proxyserver REG_SZ http=127.0.0.1:8888;https=127.0.0.1:8888' */ preg_match("/Proxyserver *REG_SZ *(.*)/i", $proxyserverString, $match); /* $match[1] will be something like 'http=127.0.0.1:8888;https=127.0.0.1:8888' */ $proxyserversTemp = explode(";", $match[1]); $proxyservers = array(); foreach ($proxyserversTemp as $proxyserverTemp) { preg_match("/^(.*?)=(.*?):(.*?)$/", $proxyserverTemp, $proxyMatch); $proxyservers[] = array( "protocol" => $proxyMatch[1], "address" => $proxyMatch[2], "port" => $proxyMatch[3] ); } print_r($proxyservers); ?> 

$proxyservers现在应该包含如下内容:

 Array ( [0] => Array ( [protocol] => http [address] => 127.0.0.1 [port] => 8888 ) [1] => Array ( [protocol] => https [address] => 127.0.0.1 [port] => 8888 ) ) 

一种方法是,您可以向www.whatismyip.com或类似网站发出curl请求,并检查html响应以找出您正在使用的代理(如果您是)。