Ich versuche, mit dem folgenden PHP-Code eine Verbindung zu einem versteckten Tor-Dienst herzustellen:
$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);
Wenn ich es ausführe, wird folgende Fehlermeldung angezeigt:
Hostname konnte nicht aufgelöst werden
Wenn ich jedoch den folgenden Befehl über meine Befehlszeile in Ubuntu ausführe:
curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion
Ich bekomme wie erwartet eine Antwort
In den PHP cURL- Dokumentationen heißt es:
--socks5-hostname
Use the specified SOCKS5 proxy (and let the proxy resolve the host name).
Ich glaube, der Grund, warum es über die Befehlszeile funktioniert, ist, dass Tor (der Proxy) den .onion-Hostnamen auflöst, den er erkennt. Wenn Sie den obigen PHP-Code ausführen, vermute ich, dass cURL oder PHP versucht, den .onion-Hostnamen aufzulösen, und ihn nicht erkennt. Ich habe nach einer Möglichkeit gesucht, cURL / PHP anzuweisen, dass der Proxy den Hostnamen auflösen soll, aber ich kann keinen Weg finden.
Es gibt eine sehr ähnliche Frage zum Stapelüberlauf : Die cURL-Anforderung mit dem socks5-Proxy schlägt bei Verwendung von PHP fehl, funktioniert jedoch über die Befehlszeile .
forward-socks5 / localhost:9150 .