我在 Windows 中使用 PHP 脚本发出 curl 请求以成功发出 SOAP 请求,并且我试图准确地追踪这个成功的请求是如何在 C#.NET 中复制它的。
如何使用 PHP 检测curl
将使用哪个代理服务器?
我希望php curlcurl_getopt
中可能有一个,所以我可以做类似的事情:
curl_getopt(CURLOPT_PROXY);
但可惜它不存在。
有什么方法可以让我找出将通过哪个代理服务器php curl
进行连接?
我在 Windows 中使用 PHP 脚本发出 curl 请求以成功发出 SOAP 请求,并且我试图准确地追踪这个成功的请求是如何在 C#.NET 中复制它的。
如何使用 PHP 检测curl
将使用哪个代理服务器?
我希望php curlcurl_getopt
中可能有一个,所以我可以做类似的事情:
curl_getopt(CURLOPT_PROXY);
但可惜它不存在。
有什么方法可以让我找出将通过哪个代理服务器php 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;
}
并查看此答案>如何获取先前使用 curl_setopt() 设置的选项?
http://php.net/manual/en/function.override-function.php
ps你可能需要http://php.net/manual/en/function.rename-function.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 响应以找出您正在使用的代理(如果您是)。