Python请求登录后失败,页面已过期

2024-03-28 08:12:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python请求Post检索登录页后面的一些html文本。但是我的代码在返回包含.... The page has expired due to inactivity.的html时失败了。你知道吗

下面是我的代码。你知道吗

import requests 

url_login = u"https://savethewater-game.com/login" 

headers = {
  'referer': 'https://savethewater-game.com/login',
  'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}

payload = {
    '_token': u'mUaaXNup3vCEtiln5QeQNJNwoO8LrCH9opoVE4GH',
    'email': u'someone@gmail.com', # fake email
    'password': u'12345678' # fake pass
}

with requests.Session() as session:
    p = session.post(url_login, headers=headers, data=payload)
    print(p.text)

Chrome开发工具中截获的登录值如下所示:

:authority: savethewater-game.com
:method: POST
:path: /login
:scheme: https
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,it;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6,en-US;q=0.5
cache-control: max-age=0
content-length: 93
content-type: application/x-www-form-urlencoded
cookie: XSRF-TOKEN=eyJpdiI6ImtvRW5UT1BMNjkxNVFBc1d2OVJKZ3c9PSIsInZhbHVlIjoicVVCYlhFRG50QmVKd3V1Yzh4NnNldUhvRXpZOWVSRDFiUGNsT1E4aG9oOUFpYlZ0M1BaRFwvR3VkK1Q4MkhLOFlBZDlxUWp4R0s4YjU4aTZGc0I0RVZ3PT0iLCJtYWMiOiIzYzMxMmI0ZjlhOTM0YzVjZjA5NDk2MDkxMDJlY2VlMjVmNjhiYTJiM2E2OTlkYmYzOTIyYzJiYTM0NTJhMWMyIn0%3D; savethewater_session=eyJpdiI6IjltY2M3alp2endPdWY4VmVpNGhKMXc9PSIsInZhbHVlIjoiVjR2T2lHempPVGM1YW04YldtbGkxcWU3TlwvU1N2RTRcL0VoMzFPY2RLb245bXo0bVJreDl0UnBMYlFjaDNOZlZlMEQ2YVpKVXU3QVYxWWRGNW13bE9wdz09IiwibWFjIjoiNjk0YTdmNTFmYzJiMzg2MDA3NmRiOGU5OTUwMWVkMDE3ZmRkZDY1NzUzMjVjMTYxNzljNjNlZTc4NzE5ODYyNiJ9
origin: https://savethewater-game.com
referer: https://savethewater-game.com/login
sec-fetch-mode: navigate
sec-fetch-site: same-origin
sec-fetch-user: ?1
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36

一些帖子提到,原因可能是网站被封锁自动报废。我想知道我的代码是不是出了问题或者其他什么问题。非常感谢!你知道吗


Tags: 代码httpscomgameapplicationsessionhtmllogin
1条回答
网友
1楼 · 发布于 2024-03-28 08:12:16

如果不使用这些凭证进行反复试验,就很难给出具体的解决方案。但是,请尝试以下操作。应该有用。你知道吗

import requests 
from bs4 import BeautifulSoup

url_login = "https://savethewater-game.com/login" 

headers = {
  'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}

payload = {
    '_token': '',
    'email': 'someone@gmail.com',
    'password': '12345678'
}

with requests.Session() as session:
    res = session.get(url_login)

    cookie_val = res.headers['Set-Cookie'].split(";")[0]
    headers['cookie'] = cookie_val

    soup = BeautifulSoup(res.text,"lxml")
    token = soup.select_one('input[name="_token"]')['value']
    payload['_token'] = token

    p = session.post(url_login,data=payload,headers=headers)
    print(p.content)

相关问题 更多 >