Я искал в Интернете и не смог найти ничего о stream_context_set_default () с защищенным паролем прокси-сервером.
Тогда я подумал, что пароль при базовой авторизации отправляется в заголовках.
Поэтому я изменил заголовки с паролем, извлеченным из запроса CURL, и он работал отлично !!!
Вот как вы это делаете:
Сначала отправьте этот запрос на любой домен (example.com), как показано ниже:
curl -v -U user:pass -x your_proxy_ip:port --url https://example.com
Посмотрите заголовки, отправленные curl, и я получил эти строки прокси для использования позже:
> Trying XXX.XXX.XXX.XXX...
> Connected to XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) port YYYY (#0)
> Establish HTTP proxy tunnel to example.com:443
> Proxy auth using Basic with user 'your_username_here'
> CONNECT example.com:443 HTTP/1.1
> Host: example.com:443
> Proxy-Authorization: Basic YW1hem9uOnXXXXXXXXXXXXXXX25SMg
> User-Agent: curl/7.47.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
< Proxy replied OK to CONNECT request
ОК, теперь пришло время создать наш пользовательский заголовок:
$default_opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Proxy-Authorization: Basic YW1hem9uOnXXXXXXXXXXXXXXX25SMg\r\n" .
"Proxy-Connection: Keep-Alive",
'proxy'=>"XXX.XXX.XXX.XXX:YYYY"
)
);
$default = stream_context_set_default($default_opts);
$result = file_get_contents("https://ipleak.net/json/");
print_r(json_decode($result));
И все работает отлично, вы получаете IP своего прокси-сервера в ответ!