40

Есть ли способ обойти следующее?Скребок экрана: обойти «Ошибка HTTP 403: запрос, запрещенный robots.txt»

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

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

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

надеясь на обходные

+0

Есть, вероятно, юридические вопросы, если вы планируете монетизировать, но если вы не» t, продолжайте, как вам будет угодно. Да здравствует scroogle. –

ответ

13

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

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

+0

Их robots.txt только запрещает «/reviews/reviews.asp» - это то, что вы соскабливаете? – fmark

+0

Спасибо, Алекс, я согласен ... после прочтения больше о файле robots.txt, это лучший подход. Cheers ... @fmark я соскабливаю видео часть ... http://video.barnesandnoble.com/robots.txt – Diego

+11

robots.txt не является юридически обязательным. (http://www.nytimes.com/2005/07/13/technology/13suit.html?ex=1278907200&en=377b4f3f0d459300&ei=5090&partner=rssuserland&emc=rss) – markwatson

1

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

Вот мой IE8 UserAgent строка:

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

хороший обман;) но это не работает в этом случае –

0

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

+0

Я не вижу проблемы с _ethical_, но _legal_ может стать еще хуже (кто бы вы ни выдали себя, мог бы обнаружить вас и подать в суд на исключенную из вас исключение, а не только B & N и вашего интернет-провайдера). «Делайте эту незаконную вещь и просто не поймайте» - это не разумный совет, даже если этические вопросы не имеют отношения (и, повторяю, я не вижу ничего, что могло бы нарушить эти конкретные законы - это слишком рискованно для слишком мало потенциального выигрыша ;-). –

+0

Юридическая проблема - этическая проблема, в этом случае вы следите за ней или нет. –

0

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

+0

Эта статья больше о пользовательском коде для очистки сайтов. Если вы используете какую-то библиотеку, библиотека может уже уважать файл robots.txt. – Niyaz

4

Mechanize автоматически следует robots.txt, но он может быть отключен если у вас есть разрешение, или вы думали этики через ..

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

browser.set_handle_equiv(False) 

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

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

+0

Эй, задумчивый, что ты имеешь в виду, дросселируя свои просьбы? – Diego

+0

Я имею в виду, задайте небольшой тайм-аут после каждого запроса (т. Е. Time.sleep (1)) и не используйте много потоков. Я бы использовал несколько потоков (в случае, если некоторые увязли), и несколько секунд спать. – wisty

+1

это не работало с текущей версией механизации –

2

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

183

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

br = mechanize.Browser() 
br.set_handle_robots(False) 
+6

Вот что я ищу. –

+3

Точно то, что я искал, ура! –

+0

Удачного дня :-) –

2

Код, чтобы сделать правильный запрос:

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 
+0

Единственный ответ, который объясняет - как мы устанавливаем заголовки вместе с отключением обработки 'robots.txt'. – markroxor