got Validation of viewstate MAC failed when sending post request from google app engine via url fetch service
您好,我遇到了与本文相同的问题,我正在向一个ASP.NET托管的网站发布一个表单,以替换Selenium
-
我使用了requests.Session()
-
使用session.get()提取viewstate、eventvalidation、viewstategenerator并附加到我的表单
-
我的get和post之间没有其他请求,viewstate rremain保持不变
-
cookies和header在会话中略有更改
-
def get_asp_viewstate(page):
return {
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__LASTFOCUS': '',
"__VIEWSTATE":page.xpath('//*[@id="__VIEWSTATE"]//@value')[0],
"__VIEWSTATEGENERATOR": page.xpath('//*[@id="__VIEWSTATEGENERATOR"]//@value')[0],
"__EVENTVALIDATION": page.xpath('//*[@id="__EVENTVALIDATION"]//@value')[0],
'__VIEWSTATEENCRYPTED': '', #not encrypted
}
def login():
#login and return session object
s = requests.Session()
res = s.get(login_url)
r = s.post(login_url, data=login_data, headers=headers)
return s
#Had logged in
session = login()
res = session.get(URL, cookies=session.cookies.get_dict())
page = etree.HTML(res.text)
validation = get_asp_viewstate(page)
form_data = {} # some dict
form_data.update(validation)
response = session.post(URL, headers=headers, cookies=cookie3,
data=form_data, verify=False,allow_redirects=True)
我100%尝试得到了http 500。
https://support.microsoft.com/en-us/help/2915218/resolving-view-state-message-authentication-code-mac-errors
此页列出了一些原因,我确信应用程序不在多服务器环境中,因为机会是100%,不是偶尔。
我想我快没主意了。
欢迎任何帮助或建议。