Странное поведение в обязательных заголовках для доступа к Amazon

#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.