首页 > 解决方案 > 使用 BeautifulSoup 登录亚马逊会导致“检测到异常登录尝试”

问题描述

我有这个代码:

'''load packages'''
import requests
from bs4 import BeautifulSoup


'''define URL where login form is located'''
site = 'https://www.amazon.com/gp/sign-in.html'

'''initiate session'''
session = requests.Session()

'''define session headers'''
session.headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Referer': site
}

'''get login page'''
resp = session.get(site)
html = resp.text

'''get BeautifulSoup object of the html of the login page'''
soup = BeautifulSoup(html, 'lxml')

'''scrape login page to get all the needed inputs required for login'''
data = {}
form = soup.find('form', {'name': 'signIn'})
for field in form.find_all('input'):
    try:
        data[field['name']] = field['value']

    except:
        pass

'''add username and password to the data for post request'''
data[u'email'] = "test@gmail.com"
data[u'password'] = "albi"

'''submit post request with username / password and other needed info'''
post_resp = session.post('https://www.amazon.com/ap/signin', data=data)

post_soup = BeautifulSoup(post_resp.content, 'lxml')
with open('file2.html', "w", encoding="utf-8") as f:
    f.write(post_soup.decode("utf-8"))
    f.close()

if post_soup.find_all('title')[0].text == 'Your Account':
    print('Login Successfull')
else:
    print('Login Failed')

这段代码将我带到这个屏幕: 在此处输入图像描述

我必须在手机上批准连接...我收到一条短信“来自亚马逊:检测到来自 XX、XX 的异常登录尝试。在此处查看详细信息:...”

我检查了两次 ua,这对于获取价格等基本请求是可以的。我应该去哪里看看?

标签: pythonpython-3.xbeautifulsouprequest

解决方案


我今晚经历了这个和随后的电子邮件,无法登录我的帐户。我正在使用我经常使用的设备和位置登录我的帐户,并且没有信心按照电子邮件说明进行操作?!


推荐阅读