Соскоб экрана: обойти "Ошибка HTTP 403: запрос запрещен robots.txt" - PullRequest
43 голосов
/ 17 мая 2010

Есть ли способ обойти следующее?

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

Это единственный способ связаться с владельцем сайта (barnesandnoble.com). Я создаю сайт, который принесет им больше продаж, но я не уверен, почему они отказывают в доступе на определенной глубине.

Я использую Mechanize и BeautifulSoup на Python2.6.

в надежде обойти

Ответы [ 8 ]

193 голосов
/ 03 октября 2010

о, нужно игнорировать файл robots.txt

br = mechanize.Browser()
br.set_handle_robots(False)
15 голосов
/ 17 мая 2010

Вы можете попытаться лгать о своем агенте пользователя (например, пытаясь убедить себя, что вы человек, а не робот), если вы хотите попасть в возможные юридические проблемы с Barnes & Noble. Почему бы вместо этого не связаться с их отделом развития бизнеса и не убедить их специально уполномочить вас? Они, без сомнения, просто пытаются избежать того, чтобы их сайт не соскребали некоторые классы роботов, такие как системы сравнения цен, и если вы сможете убедить их, что вы не один, подписать контракт и т. Д., Они вполне могут захотеть сделать исключение для вас.

«Технический» обходной путь, который просто нарушает их политику, закодированную в robots.txt, - это подход с высоким уровнем юридического риска, который я бы никогда не рекомендовал. Кстати, как читает их robots.txt?

5 голосов
/ 17 мая 2010

Механизация автоматически следует robots.txt, но ее можно отключить, если у вас есть разрешение или вы продумали этику до конца.

Установите флажок в вашем браузере:

browser.set_handle_equiv(False) 

Это игнорирует robots.txt.

Кроме того, убедитесь, что вы ограничиваете свои запросы, чтобы не слишком загружать их сайт. (Обратите внимание, это также снижает вероятность того, что вас обнаружат и забанят).

4 голосов
/ 21 апреля 2017

Код для правильного запроса:

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
3 голосов
/ 12 июля 2010

Полученная вами ошибка не связана с пользовательским агентом. Механизм по умолчанию проверяет директивы robots.txt автоматически, когда вы используете его для перехода на сайт. Используйте .set_handle_robots (false) метод mechanize.browser, чтобы отключить это поведение.

1 голос
/ 17 мая 2010

Установите заголовок User-Agent, чтобы он соответствовал реальному пользовательскому агенту IE / FF.

Вот моя строка для 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)
0 голосов
/ 17 мая 2010

Как кажется, вам нужно сделать меньше работы, чтобы обойти robots.txt, , по крайней мере, говорится в этой статье . Поэтому вам, возможно, придется удалить некоторый код, чтобы игнорировать фильтр.

0 голосов
/ 17 мая 2010

Не обсуждая этику, вы можете изменить заголовки, чтобы они выглядели, например, как googlebot, или gbbbot также заблокирован?

...