다음 PHP 코드를 사용하여 Tor 숨겨진 서비스에 연결하려고합니다.
$url = 'http://jhiwjjlqpyawmpjx.onion/'
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, "http://127.0.0.1:9050/");
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
$output = curl_exec($ch);
$curl_error = curl_error($ch);
curl_close($ch);
print_r($output);
print_r($curl_error);
실행할 때 다음 오류가 발생합니다.
호스트 이름을 확인할 수 없습니다
그러나 우분투의 명령 줄에서 다음 명령을 실행할 때 :
curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion
예상대로 응답을받습니다
PHP cURL 문서는 다음과 같이 말합니다.
--socks5-hostname
Use the specified SOCKS5 proxy (and let the proxy resolve the host name).
커맨드 라인에서 작동하는 이유는 Tor (프록시)가 인식하는 .onion 호스트 이름을 확인하기 때문입니다. 위의 PHP 코드를 실행할 때 cURL 또는 PHP가 .onion 호스트 이름을 확인하려고 시도하고 인식하지 못하는 것 같습니다. 프록시가 호스트 이름을 확인하도록 cURL / PHP에 알리는 방법을 찾았지만 방법을 찾을 수 없습니다.
매우 유사한 스택 오버플로 질문이 있습니다. socks5 프록시를 사용한 cURL 요청은 PHP를 사용할 때 실패하지만 명령 행을 통해 작동합니다 .
forward-socks5 / localhost:9150 .