web-dev-qa-db-fra.com

Capture d'écran: contourner "Erreur HTTP 403: demande refusée par robots.txt"

Existe-t-il un moyen de contourner ce qui suit?

httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

Est le seul moyen de contourner cela pour contacter le propriétaire du site (barnesandnoble.com) .. Je construis un site qui leur apporterait plus de ventes, je ne sais pas pourquoi ils refuseraient l'accès à une certaine profondeur.

J'utilise mechanize et BeautifulSoup sur Python2.6.

en espérant une solution de rechange

43
Diego

Vous pouvez essayer de mentir à propos de votre agent utilisateur (par exemple, en essayant de faire croire que vous êtes un être humain et non un robot) si vous souhaitez avoir des problèmes juridiques avec Barnes & Noble. Pourquoi ne pas prendre contact avec leur service de développement commercial et les convaincre de vous autoriser spécifiquement? Ils essaient sans aucun doute d'éviter que leur site ne soit éraflé par certaines classes de robots tels que les moteurs de comparaison de prix, et si vous pouvez les convaincre que vous n'êtes pas un, signer un contrat, etc., ils pourraient bien être prêts à faire une exception pour vous.

Une solution de contournement "technique" qui ne fait que casser leurs politiques telles qu'elles sont encodées dans le fichier robots.txt est une approche à haut risque juridique que je ne recommanderais jamais. BTW, comment est-ce que leur robot.txt lit-il?

14
Alex Martelli

oh vous devez ignorer le fichier robots.txt

br = mechanize.Browser()
br.set_handle_robots(False)
198
Yuda Prawira

Mechanize suit automatiquement robots.txt, mais il peut être désactivé en supposant que vous en ayez la permission, ou que vous ayez réfléchi à l'éthique.

Définissez un indicateur dans votre navigateur:

browser.set_handle_equiv(False) 

Cela ignore le fichier robots.txt.

Assurez-vous également de limiter vos demandes afin de ne pas mettre trop de charge sur leur site. (Remarque, cela rend également moins probable qu'ils vous détectent et vous interdisent).

5
wisty

Le code pour faire une demande correcte:

br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
resp = br.open(url)
print resp.info()  # headers
print resp.read()  # content
4
Vladislav

L'erreur que vous recevez n'est pas liée à l'agent utilisateur. mécaniser par défaut vérifie automatiquement les directives robots.txt lorsque vous l'utilisez pour naviguer vers un site. Utilisez la méthode .set_handle_robots (false) de mechanize.browser pour désactiver ce comportement.

3
Tom

Définissez votre User-Agent en-tête pour correspondre à un véritable agent utilisateur IE/FF.

Voici ma chaîne useragent IE8:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; AskTB5.6)
1
Stefan Kendall

Sans débattre de l'éthique de cela, vous pouvez modifier les en-têtes pour ressembler au googlebot par exemple, ou le googlebot est-il également bloqué?

0
Steve Robillard

Il semble que vous devez faire moins de travail pour contourner robots.txt, dit au moins cet article . Vous devrez donc peut-être supprimer du code pour ignorer le filtre.

0
BrunoLM