python-3.x - Python 请求 - org.apache.struts.taglib.html.TOKEN 问题

标签 python-3.x python-requests

第一次在这里发帖,如果我弄错了任何礼仪,请提前道歉。

我正在使用请求在 python 3 中编写一些代码,以登录网站,登录后它应该返回另一个页面。

我已经使用 Google Chromes 开发人员工具来查看需要在有效负载中包含哪些表单数据,我认为导致问题的是 org.apache.struts.taglib.html.TOKEN,它在每个表单提交中都是唯一的.

有谁知道如何解决这个问题?或者这是另一个问题?
目前它返回给我一个页面,告诉我“详细信息不正确”。不过,我已使用这些详细信息手动登录该站点,以记录登录期间发送的数据。

我的代码如下。

import requests

with requests.Session() as s:

payload = {"org.apache.struts.taglib.html.TOKEN": this is unique on each form submission,
           "loginRegNo": xxxxxxx, "loginPin": xxxxxx}
headers = {"Accept": "text/html",
           "Accept-Encoding": "gzip, deflate, br",
           "Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8",
           "Cache-Control": "no-cache",
           "Connection": "keep-alive",
           "Content-Length": "105",
           "2Content-Type": "application/x-www-form-urlencoded",
           "Cookie": "JSESSIONID=xxxxxx,
           "Host": "www.website.ie",
           "Origin": "https://www.website.ie",
           "Pragma": "no-cache",
           "Referer": "https://www.website.ie/OMT/omt.do",
           "Upgrade-Insecure-Requests": "1",
           "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                         "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36}"
           }

p = s.post("https://www.website.ie/OMT/omt.do", data=payload, headers=headers, cookies=s.cookies)
# print the status code to see if it's successful
print(p.status_code)

r = s.get("https://www.website.ie/OMT/login.do", cookies=s.cookies)
print(r.text)
print(r.url)

print(r.status_code)

最佳答案

我认为你应该

 - p = s.get("https://www.website.ie/OMT/omt.do")
 - extract the token generated for that session from the org.apache.struts.taglib.html.TOKEN input element of p
 - add the extracted token to the payload, beside loginRegNo and loginPin
 - (you might not need to add Cookie and Content-Length headers)
 - s.post("https://www.website.ie/OMT/login.do", data=payload, headers=headers, cookies=s.cookies)

请注意,我 GET https://www.website.ie/OMT/omt.do和 POST 反对 https://www.website.ie/OMT/login.do .

祝你好运!

关于python-3.x - Python 请求 - org.apache.struts.taglib.html.TOKEN 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51725150/

相关文章:

python - Pandas 删除重复的数据范围

python - 为什么 round(5/2) 返回 2?

python - Django 不接受来自 python-requests.patch() 的数据

Python 请求响应解码

python-3.x - Python程序,插入txt文件到sqlite3数据库

Python - 字符串中的单词影响结果

python - ImportError : No module named mechanize - XCode 6. 1 没有看到新安装的 python 库

python - 为什么最简单的 requests_mock 示例在 pytest 中失败?

python - 通过Python访问Indeed

python - "argument 1 has unexpected type ' 字符串 '"