2010-11-11 16 views
1

J'essaye de créer un crawler pour télécharger du contenu d'un site Web.meta refresh télécharger/C# crawler

En supposant que l'URL pour consommer est quelque chose comme

clickUrl ="http://www.example.com/idocs-nph/search/pdfViewerForm.html?args=5C7QrtC22wGYK2xFpSwMnXdtvSoClrL8xJKSjjboeVQpCCmqt4mgGEHlbmahCJFQEmRQwePEviF8EeCoaT0MAKztT3Sb63xk3VkL3PiCQ3RLoVYQqjKiogfu8Gq1RKKQmyoZK8o4WQM0kj-3nPY6gOqNXOY8VS4VhacAYKom_mBgul0xmRvgLA.."; 

sur un navigateur web, le téléchargement est effectué de retour html contenant un META refresh

<meta http-equiv="REFRESH" content="0;url=http://www.example.com/idocs-nph/search/pdfViewerForm.html?args=5C7QrtC22wGYK2xFpSwMnXdtvSoClrL8xJKSjjboeVQpCCmqt4mgGEHlbmahCJFQEmRQwePEviF8EeCoaT0MAKztT3Sb63xk3VkL3PiCQ3TmKpPQrAvPZQfu8Gq1RKKQmyoZK8o4WQMl05IxFu8XBzuJ49RIAPXJ8d-HneKenBQ-TKbP_e17qQ.."/> 

et le navigateur demande un nom de fichier enregistrer le fichier

Sur mon numéro de crawler,

ouvrir un WebRequest au CLICKURL,

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(clickUrl); 

Je perçois et suivre l'URL REFRESH en utilisant une nouvelle WebRequest, mais la réponse est un nouveau html contenant également métadonnée refresh, non pas le fichier (assez récursive)

HttpWebRequest ne contient pas de cookies

Répondre

1

Il est très probable que le site vérifie pour les cookies. La raison pour laquelle cela se produit est que lorsque vous envoyez à quelqu'un un lien du fichier de téléchargement, le destinataire sera toujours dirigé vers le site avant de pouvoir télécharger le fichier. Sourceforge fait quelque chose d'intéressant ici qui peut aider. Si vous allez télécharger un fichier depuis Sourceforge, vous apparaissez sur une page comme celle que vous décrivez. Cependant, si vous ouvrez exactement la même page en utilisant wget, vous verrez qu'il charge réellement le fichier. Il détecte que vous n'êtes pas un navigateur normal et vous envoie le fichier (le HTML ne va pas faire quoi que ce soit de bien avec wget, il ne va pas regarder les publicités).

Je vous suggère d'essayer ce qui suit. Lorsque vous trouvez une page qui a une telle redirection, redirigez-la. Si vous constatez que vous récupérez le même contenu, réessayez sans User-Agent. Peut-être que cela vous donnera le fichier.