ฉันกำลังพยายามเชื่อมต่อกับบริการที่ซ่อนอยู่ของ Tor โดยใช้รหัส PHP ต่อไปนี้:
$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);
เมื่อฉันเรียกใช้ฉันได้รับข้อผิดพลาดต่อไปนี้:
ไม่สามารถแก้ไขชื่อโฮสต์
อย่างไรก็ตามเมื่อฉันเรียกใช้คำสั่งต่อไปนี้จากบรรทัดคำสั่งของฉันใน Ubuntu:
curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion
ฉันได้รับการตอบสนองตามที่คาดไว้
เอกสารcURL PHP บอกสิ่งนี้:
--socks5-hostname
Use the specified SOCKS5 proxy (and let the proxy resolve the host name).
ฉันเชื่อว่าเหตุผลที่ใช้งานได้จากบรรทัดคำสั่งนั้นเป็นเพราะ Tor (พร็อกซี) กำลังแก้ไขชื่อโฮสต์. onion ที่รู้จัก เมื่อใช้งานโค้ด PHP ด้านบนการเดาของฉันคือ cURL หรือ PHP พยายามแก้ไขชื่อโฮสต์. onion และไม่รู้จัก ฉันค้นหาวิธีที่จะบอก cURL / PHP เพื่อให้พร็อกซีแก้ไขชื่อโฮสต์ แต่ฉันหาวิธีไม่พบ
มีความคล้ายกันมากแตกมากเกินคำถามคือคำขอม้วนโดยใช้พร็อกซี่ SOCKS5 ล้มเหลวเมื่อใช้ PHP แต่มันทำงานผ่านบรรทัดคำสั่ง
forward-socks5 / localhost:9150 .