Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AJAX请求后重定向,即使使用Python3正确传递了头和数据属性_Ajax_Redirect_Web Scraping_Python Requests - Fatal编程技术网

在AJAX请求后重定向,即使使用Python3正确传递了头和数据属性

在AJAX请求后重定向,即使使用Python3正确传递了头和数据属性,ajax,redirect,web-scraping,python-requests,Ajax,Redirect,Web Scraping,Python Requests,在一个政府网站上,我通过我的凭据(在login\u data中指定为python命令)登录,如下所示: with requests.Session() as s: url = 'https:......../login' r = s.get(url, data=login_data, headers=headers, verify=False) r = s.post(url, data=login_data, headers = headers, verify=False

在一个政府网站上,我通过我的凭据(在
login\u data
中指定为python命令)登录,如下所示:

with requests.Session() as s:
    url = 'https:......../login'
    r = s.get(url, data=login_data, headers=headers, verify=False)
    r = s.post(url, data=login_data, headers = headers, verify=False)
    print(r.content)
其中显示一个html:


b'您需要一个请求,GET或POST,而不是同时使用
r=s.GET(…)
r=s.POST(…)
。带有
位置
名称的节点
清楚地表明存在重定向。尝试在第二个瞬间允许重定向
s.post(url,data=search\u data,headers=headers,verify=False,allow\u redirects=True)
是。但是,为了验证登录,第一个需要两者。允许重定向不起作用,因为它仍然为
print(r.content)
提供相同的输出,您在标题中设置了Cookie,这可能会覆盖会话存储的Cookie并更改服务器的响应。通常情况下,除了在某些情况下更改用户代理之外,不需要修改标题。我以前也尝试过这种方法,但没有任何效果。不幸的是,我仍然得到响应“Location”*redirect”,这显然是错误的(异常的)行为,如果与Google Chrome Inspector中显示的相同请求相比较的话=(我不明白缺少的部分是什么。我的意思是用r.content获取响应没有错,对吧?请求中缺少什么?可能是我没有使用相同的会话id?或者服务器不知何故检测到我跳过了几个中间步骤?您需要一个请求,GET或POST,而不是两者都
r=s.GET(…)
r=s.post(…)
。具有
位置的节点
meta
名称清楚地表明存在重定向。尝试允许重定向
s.post(url,数据=搜索数据,标题=标题,验证=假,允许重定向=真)
第二个瞬间是。但是第一个瞬间需要两者来验证登录。允许重定向不起作用,因为它仍然为
打印(r.content)提供相同的输出
在标题中,您设置了一个Cookie,该Cookie可能会覆盖会话存储的Cookie并更改服务器的响应。通常不需要修改标题,但在某些情况下需要更改用户代理。我以前也尝试过此操作,但没有任何效果。不幸的是,我仍然获得了“响应”位置“*重定向”,如果与谷歌Chrome Inspector中显示的相同请求相比,这显然是错误的(异常的)行为。我希望我能得到这个该死的html=(我不明白缺失的部分是什么。我的意思是用r.content获取响应没有错,对吗?请求中缺失了什么?可能是我没有使用相同的会话id?或者服务器不知何故检测到我跳过了几个中间步骤?
with requests.Session() as s:
    url = 'https:......../search'
    r = s.get(url, data=search_data, headers=headers, verify=False)
    r = s.post(url, data=search_data, headers = headers, verify=False)
    print(r.content) 
search_data:{
    'AJAXREQUEST': '_viewRoot',
    'theSearchForm': 'theSearchForm',
    'incident-ID' : '12345',
    'start_date' : '05/03/2019 00:00:00 +01:00',
    'end_date' : '05/03/2019 23:59:59 +01:00',
}
 headers = { 
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
    'Connection': 'keep-alive',
    'Cookie': 'JSESSIONID=8351xxxxxxxxxxxxFD5; _ga=GA1.2.xxxxxxx.xxxxxxxx',
    'Host': 'somehost...xyz.eu',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
}