#python #web-scraping #amazon #request-headers
Вопрос:
Я столкнулся с этим странным поведением, с которым я раньше не сталкивался, пытаясь получить доступ к Amazon с помощью requests
.
Взгляните на этот код, который я изначально использовал для доступа к веб-сайту
from bs4 import BeautifulSoup
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36'
}
url = "https://www.amazon.com"
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, "html.parser")
В ответе, который я получил, есть комментарий, в котором говорится:
Чтобы обсудить автоматический доступ к данным Amazon, пожалуйста, свяжитесь с api-services-support@amazon.com. Для получения информации о переходе на наши API-интерфейсы обратитесь к нашим API-интерфейсам Marketplace по адресу https://developer.amazonservices.com/ref=rm_c_sv, или наш API рекламы продукта на https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html/ref=rm_c_ac для рекламных случаев использования.
Теперь часть, которую я не могу объяснить , заключается в том, что, когда я передаю какую-то ерунду headers
, я могу получить доступ к странице в полном порядке. См. Пример ниже
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36',
'some': 'nonsense'
}
Почему этот бессмысленный параметр необходимо передать headers
, чтобы получить доступ к Amazon, и возможно ли получить доступ к нему без этого бессмысленного параметра?
Комментарии:
1. Вероятно, они фильтруют запросы, содержащие только заголовок Агента пользователя, и помечают его как попытку автоматического доступа к сайту. Дополнительный заголовок (который, кстати, может быть чем угодно) обходит эту проверку. Кстати, все догадки. Только Amazon может ответить на этот вопрос.
2. Это тоже то, что я предполагал, но мне это показалось устаревшей проверкой безопасности для такого большого веб-сайта, как Amazon.