php curl get proxy

Я использую PHP-скрипт в Windows, чтобы сделать запрос на завивание, чтобы успешно выполнить запрос SOAP, и я пытаюсь точно определить, как этот успешный запрос был реплицирован на C # .NET.

Как я могу использовать PHP для определения того, какой curl прокси-сервера будет использоваться?

Я надеялся, что в php curl может быть curl_getopt , поэтому я мог бы сделать что-то вроде:

 curl_getopt(CURLOPT_PROXY); 

но, увы, этого не существует.

Есть ли способ узнать, через какой прокси-сервер php curl будет подключаться?

1. Вы говорите завиток, какой прокси использовать, а не наоборот:

 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 на www.whatismyip.com или похожий сайт и проверить html-ответ, чтобы узнать прокси-сервер, который вы используете (если есть).