【发布时间】:2018-06-19 05:02:44
【问题描述】:
我是 python 新手,并且遇到了与请求 GitHub 上的问题相同的问题。我正在尝试对一个网站进行身份验证,该网站在初始登录后将您重定向到一个安全问题。初始登录和后续页面都使用相同的“操作 URL”,在第二个发布请求中我收到 404,这是我的代码,任何帮助将不胜感激,在 GitHub 上提出问题后,他们说这是一个问题在这里问,因为它不在他们的尽头。 (尽管他们在 GitHub 上对此有疑问):
from bs4 import BeautifulSoup as bs
import requests
import time
sources = ["https://www.dandh.com/v4/view?pageReq=dhMainNS"]
req = requests.Session()
def login():
authentication_url = "https://www.dandh.com/v4/dh"
header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; rv:60.0) Gecko/20100101 Firefox/60.0"}
payload = {"Login": "12345",
"PW": "12345",
"Request": "Login"}
payload2 = {"securityAnswer": "12345",
"Request": "postForm"}
req.post(authentication_url, data=payload, headers=header)
time.sleep(3)
req.post(authentication_url, data=payload2, headers=header)
time.sleep(3)
def print_object(sources):
for url in sources:
soup_object = bs(req.get(url).text, "html.parser")
print(soup_object.get_text())
def main():
login()
print_object(sources)
main()
【问题讨论】:
-
第一个请求有效吗? (通过工作我的意思是它让你登录)
-
是的,它确实成功通过了第一个登录页面,如果我尝试获取 status.code,第一个给我一个 200,而第二个给我一个 404。两者都有相同的操作html POST 请求中的 url。我还尝试将来自第一个和第二个有效负载的数据一起添加到一个中(因为它们是相同的 url)并且根本没有设法登录。
-
您收到
200的状态代码这一事实在登录时并没有多大意义,因为它只是告诉您请求已收到并理解并正在处理中。它并没有真正告诉您是否已成功登录或不尝试使用打印请求的 HTML 内容(使用.text)然后您将知道您是否真的登录。让我了解您所看到的最新信息。 -
是的,如果您查看 print_object 函数,我也在使用该函数来检查 html 的每一步。为了进入带有安全问题的第二页,您必须成功登录到第一页,这就是我每次都结束的地方。我只检查了状态码,看看他们是否都拉了 200,这会告诉我问题可能出在我的凭据或我的代码中的某些东西上(凭据是正确的,当然我可以在浏览器中登录)。但我确实在第二个请求中得到了 404
-
那太好了,给我秒我会试着写一个答案
标签: python-3.x request python-requests http-status-code-404