2009-09-11 9 views
0

Je fais de l'automatisation pour un client et prévoyais d'exécuter certains scripts PHP via cURL dans le processus. Cependant, les URL qui fonctionnent correctement dans un navigateur sont à venir 404 lorsqu'il est frappé par cURL. J'ai vu ailleurs que certains serveurs sont configurés pour bloquer cURL de cette manière.Le serveur est-il configuré pour envoyer 404 aux demandes de cURL?

Est-ce un paramètre que je pourrais modifier dans httpd.conf? Ne semble pas être en php.ini.

Mon code est comme ceci:

$url = "http://site.com/xxx/curl.php?cID=$c->cID&db=$c->db&un=$c->un&/"; 
    echo "$url"; 

    // spoofing FireFox 2.0 
    $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) 
    Gecko/20061204 Firefox/2.0.0.1"; 
    $ch = curl_init ($url) ; 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ; 
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
    $res = curl_exec ($ch); 

Quand je fais écho $res je reçois le code de la page d'erreur 404 par défaut. Si je copie le $ url échoué et le collez dans le navigateur j'obtiens la page fine. Également essayé en utilisant le chemin relatif et le chemin complet du serveur.

L'usurpation de l'agent utilisateur a été ajoutée aujourd'hui pour essayer de voir si dire que je n'étais pas cURL aiderait mais rien dans la réponse n'a changé.

Avez-vous des idées sur la façon de trouver la cause de cette situation ou de la résoudre?

+1

Vider l'ensemble des en-têtes générés par firefox. Vider l'ensemble des en-têtes actuellement générés par curl. Continuez à peaufiner vos paramètres de boucle jusqu'à ce qu'ils correspondent. Si vos en-têtes sont identiques (y compris les cookies) et que vous demandez des pages à un taux réaliste, il n'y a pas vraiment moyen de faire la différence entre un curl et un vrai navigateur. ... Eh bien, un vrai navigateur demande des images et des scripts - pas seulement du HTML :) –

Répondre

1

Il se trouve que les gens aimables chez The Planet ont des problèmes de routage internes avec ce compte. Mauvais paramètres de nom d'hôte dans/etc/sysconfig/network et mauvais résolveurs dans /etc/resolv.conf entre autres choses. Ceci et un certain nombre d'autres sites ont récemment migré d'un de leurs serveurs à l'autre. Pas encore fixé mais c'est pourquoi le 404.

Merci.