繁体   English   中英

Python 请求登录 403

[英]Python Requests Login 403

我正在尝试登录此网站:

https://www.nike.com.br 

首先,我使用 selenium 获取 cookie,然后访问第二个 url 以获取访问者令牌 cookie 以将其传递给登录 url 的 params

NIKE_LINK = "https://www.nike.com.br"
LOGIN_LINK = "https://unite.nike.com/login"
VISITOR_LINK = "https://unite.nike.com/akam/11/7e6e9f7d"
driver = webdriver.Firefox()
driver.get(NIKE_LINK)
cookies_home = driver.get_cookies()
driver.get(VISITOR_LINK)
cookies_visitor = driver.get_cookies()

#get the visitor token 
for cookie in cookies_visitor:
    if cookie['name'] == 'visitData':
        visitor = cookie['value']
        index= visitor.find('visitor') + 10
        for i in range(indice, len(visitor)):
            if visitor[i] == '"':
                break
        token = visitor[index:i]

然后我将它们传递给带有请求的会话

session = requests.Session()

for cookie in cookie_home:
    session.cookies.set(cookie['name'], cookie['value'], path=cookie['path'], domain=cookie['domain'])

最后尝试使用 POST 请求登录网站

params = (
    ('appVersion', '674'),
    ('experienceVersion', '674'),
    ('uxid', 'com.nike.commerce.nikedotcom.brazil.web'),
    ('locale', 'pt_BR'),
    ('backendEnvironment', 'identity'),
    ('browser', 'Google Inc.'),
    ('os', 'undefined'),
    ('mobile', 'false'),
    ('native', 'false'),
    ('visit', '1'),
    ('visitor', token),
)

headers_login = {
    'authority': 'unite.nike.com.br',
    'access-control-request-method': 'POST',
    'origin': 'https://www.nike.com.br',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 OPR/65.0.3467.78',
    'access-control-request-headers': 'content-type',
    'accept': '*/*',
    'sec-fetch-site': 'same-site',
    'sec-fetch-mode': 'cors',
    'referer': 'https://www.nike.com.br/',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7',
}

data = '{"username":"%s'%email+'","password":"%s'%password+'","client_id":"_coe5BGx05K7qEETikSo_2YKClTo1qxI","ux_id":"com.nike.commerce.nikedotcom.brazil.web","grant_type":"password"}'

response = session.post(LOGIN_LINK, headers=headers_login, params=params, json=data)
print(response.text)

但我收到错误 403

<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

You don't have permission to access "http&#58;&#47;&#47;unite&#46;nike&#46;com&#47;login&#63;" on this server.<P>
Reference&#32;&#35;18&#46;4ec5d3ba&#46;1578601683&#46;770ee721
</BODY>
</HTML>

任何帮助将不胜感激! 谢谢

如果有人偶然发现这个问题,403 的原因是因为 _abck cookie

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM