Saya mencoba menyambung ke layanan tersembunyi Tor menggunakan kode PHP berikut:
$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);
Ketika saya menjalankannya, saya mendapatkan kesalahan berikut:
Tidak dapat menyelesaikan nama host
Namun, ketika saya menjalankan perintah berikut dari baris perintah saya di Ubuntu:
curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion
Saya mendapat respons seperti yang diharapkan
Dokumentasi PHP cURL mengatakan ini:
--socks5-hostname
Use the specified SOCKS5 proxy (and let the proxy resolve the host name).
Saya percaya alasan kerjanya dari baris perintah adalah karena Tor (proxy) sedang menyelesaikan nama host .onion, yang dikenali. Saat menjalankan kode PHP di atas, tebakan saya adalah bahwa cURL atau PHP sedang mencoba untuk menyelesaikan nama host .onion dan tidak mengenalinya. Saya telah mencari cara untuk memberitahu cURL / PHP untuk membiarkan proxy menyelesaikan nama host, tetapi saya tidak dapat menemukan cara.
Ada pertanyaan Stack Overflow yang sangat mirip, permintaan cURL menggunakan socks5 proxy gagal saat menggunakan PHP, tetapi ia bekerja melalui baris perintah .
forward-socks5 / localhost:9150 .