Подтвердить что ты не робот

Почему Google Search возвращает HTTP-ошибку 403?

Рассмотрим следующий код Python:

 30    url = "http://www.google.com/search?hl=en&safe=off&q=Monkey"
 31    url_object = urllib.request.urlopen(url);
 32    print(url_object.read());

Когда это выполняется, генерируется Исключение:

File "/usr/local/lib/python3.0/urllib/request.py", line 485, in http_error_default
   raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Однако, когда это помещается в браузер, поиск возвращается как ожидалось. Что здесь происходит? Как я могу это преодолеть, чтобы я мог программно искать Google?

Любые мысли?

4b9b3361

Ответ 1

Если вы хотите, чтобы Google искал "правильно" через интерфейс программирования, посмотрите API Google. Они не только являются официальным способом поиска Google, но также не могут измениться, если Google изменит макет страницы результатов.

Ответ 2

это должно сделать трюк

user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'

url = "http://www.google.com/search?hl=en&safe=off&q=Monkey"
headers={'User-Agent':user_agent,} 

request=urllib2.Request(url,None,headers) //The assembled request
response = urllib2.urlopen(request)
data = response.read() // The data u need

Ответ 3

Как lacqui предложил, API Google - это то, как они хотят вас делать запросы из кода. К сожалению, я обнаружил, что их документация была нацелена на людей, которые пишут веб-страницы AJAX, не делая необработанных HTTP-запросов. Я использовал заголовки LiveHTTP для отслеживания HTTP-запросов, которые были сделаны с помощью образцов, и я нашел сообщение ddipaolo полезно.

Еще одна вещь, которая меня испортила: они ограничивают вас результатами первых 64 из запроса. Обычно это не проблема, если вы просто предоставляете веб-пользователям окно поиска, но не полезно, если пытаетесь использовать Google для перехода данных. Я думаю, они не хотят, чтобы вы отправляли данные с помощью своего API. Этот номер 64 со временем изменился и варьируется между поисковыми продуктами.

Обновление: Кажется, они определенно не хотят, чтобы вы отправляли данные. В конце концов вы получите ошибку 403 со ссылкой на это уведомление о доступе API.

Ознакомьтесь с Условиями использования API (-ов), которые вы используете (связаны с правой боковой панелью) и убедитесь в соответствии. Вероятно, мы заблокировали вас за одно из следующих нарушений Условий использования. Мы получили автоматические запросы, такие как очистка и предварительная выборка. Автоматизированные запросы запрещены; все запросы должны быть сделаны в результате действия конечного пользователя.

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

Ответ 4

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