517 votes

Comment puis-je me connecter à un service caché Tor à l'aide de curl en php?

Le personnel Remarque: Cette question et les réponses associées ont été verrouillé pour empêcher la discussion hors sujet entourant un événement d'actualité qui est liée à la question à portée de main. Des Questions au sujet de cet événement peuvent être trouvés sur notre méta site. Merci!!!!

Je suis en train d'essayer de vous connecter à un service caché tor en utilisant le php suivant:

$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);

quand je le lance j'obtiens l'erreur suivante:

Couldn't resolve host name

Cependant, lorsque je lance la commande suivante à partir de ma ligne de commande sous ubuntu:

curl -v --socks5-hostname localhost:9050 http://jhiwjjlqpyawmpjx.onion

Je reçois une réponse comme prévu

le php cURL documentations dit ceci:

--socks5-hostname
Use  the  specified  SOCKS5 proxy (and let the proxy resolve the host name).

Je crois que la raison pour laquelle il travaille à partir de la ligne de commande est parce que Tor (le proxy) est la résolution de la .l'oignon nom d'hôte, dont il reconnaît. Lors de l'exécution du php ci-dessus, je suppose que cURL ou php est en essayant de résoudre l' .l'oignon nom d'hôte et ne pas le reconnaître. J'ai cherché un moyen de dire cURL/php pour laisser le proxy de résoudre le nom d'hôte, mais ne peut pas trouver un moyen.

Il y a une question très semblable ici: CURL demande à l'aide du proxy socks5 échoue lors de l'utilisation de PHP mais fonctionne par le biais de la ligne de commande

122voto

dr.scre Points 637

Ressemble CURLPROXY_SOCKS5_HOSTNAME n'est pas défini dans le PHP, mais vous pouvez utiliser explicitement sa valeur, qui est égal à 7:

curl_setopt($ch, CURLOPT_PROXYTYPE, 7);

23voto

FattyPotatoes Points 156

Je utiliser privoxy et curl à gratter TOR pages

<?php
$ch = curl_init('http://jhiwjjlqpyawmpjx.onion'); // tormail url
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
curl_setopt($ch, CURLOPT_PROXY, "localhost:8118"); // default privoxy port
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_exec($ch); 
curl_close($ch);
?>

Après l'installation de privoxy, vous devez ajouter cette ligne dans le fichier de configuration (/etc/privoxy/config). Remarque l'espace et '.' a la fin de la ligne.

forward-socks4a / localhost:9050 .

Redémarrez privoxy.

/etc/init.d/privoxy restart

9voto

Anthony Garcia Points 603

Essayez d'ajouter ceci:

curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X