Я на самом деле только начал этот путь, и это немного сложно, потому что почти вся доступная документация относится к одноименному API рекламы продуктов Amazon.
Хотя у меня нет точного ответаЯ думаю, что непосредственная проблема заключается в том, что вы публикуете исходный URL, но Amazon обрабатывает запрос на вход по URL: https://www.amazon.com/ap/signin
Если вы измените URL-адрес на https://www.amazon.com/ap/signin Amazon, скорее всего,ударить вас по капче, так как их автоматическое обнаружение довольно строгое.
Вам нужно включить куки, чтобы избежать капчи, но если у вас есть 2FA на вас, вы также будете поражены этим.Я обновлю это через несколько минут, когда найду лучшее решение для печенья + 2fa.
import requests
from bs4 import BeautifulSoup
client_email = EMAIL
client_pass = POSS
client_id = CLIENT_ID
return_url = RETURN_URL # I'm not convinced this matters
# I just copied these values from my browser
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.5',
'cache-control': 'max-age=0',
'referer': 'https://www.amazon.com/gp/sign-in.html',
'upgrade-insecure-requests': '1'
}
url = 'https://www.amazon.com/ap/oa?client_id=' + client_id + '&scope=cpc_advertising:campaign_management&' \
'response_type=code&redirect_uri=' + return_url
with requests.session() as s:
response = s.get(url, headers=headers)
cookies = dict(response.cookies)
soup = BeautifulSoup(response.text, 'html.parser')
data = {}
form = soup.find('form', {'name': 'signIn'})
for field in form.find_all('input'):
try:
data[field['name']] = field['value']
except:
pass
data[u'email'] = client_email
data[u'password'] = client_pass
post_resp = s.post('https://www.amazon.com/ap/signin', data=data, headers=headers, cookies=cookies)
Мне удалось выяснить, как автоматизировать этот процесс.Напишите мне для получения дополнительной информации.