Tôi đang cố gắng kết nối với dịch vụ ẩn Tor bằng mã PHP sau:
$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);
Khi tôi chạy nó, tôi gặp lỗi sau:
Không thể giải quyết tên máy chủ
Tuy nhiên, khi tôi chạy lệnh sau từ dòng lệnh của mình trong Ubuntu:
curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion
Tôi nhận được phản hồi như mong đợi
Các tài liệu cURL PHP nói điều này:
--socks5-hostname
Use the specified SOCKS5 proxy (and let the proxy resolve the host name).
Tôi tin rằng lý do nó hoạt động từ dòng lệnh là vì Tor (proxy) đang giải quyết tên máy chủ .onion mà nó nhận ra. Khi chạy mã PHP ở trên, tôi đoán là cURL hoặc PHP đang cố gắng giải quyết tên máy chủ .onion và không nhận ra nó. Tôi đã tìm kiếm một cách để nói với cURL / PHP để cho phép proxy giải quyết tên máy chủ, nhưng tôi không thể tìm ra cách nào.
Có một câu hỏi Stack Overflow rất giống nhau, yêu cầu cURL sử dụng proxy vớ5 không thành công khi sử dụng PHP, nhưng nó hoạt động thông qua dòng lệnh .
forward-socks5 / localhost:9150 .