gpt4 book ai didi

asp.net - 如何处理 ASP.net 的神秘隐藏值? (__VIEWSTATE)

转载 作者:行者123 更新时间:2023-11-28 18:52:22 25 4
gpt4 key购买 nike

当您尝试使用 Python 请求 (POST) 页面时,我试图弄清楚如何处理神秘的“__VIEWSTATE”和 Cie。它是我的脚本中很多问题的主要来源……我意识到,当我在寻找答案/解决方案时,你没有那么多的解决方案(几乎是 0!)。

在本主题中: Unable to load ASP.NET page using Python urllib2你可以看到我给出的解决方案包括在每次加载页面时解析隐含字段的值......这有效,但实际上这很愚蠢:-)

    for result in the_page.findAll('input', attrs={'name' : '__VIEWSTATE'}):
view_state = result['value']

for result_1 in the_page.findAll('input', attrs={'name' : '__EVENTVALIDATION'}):
event_validation = result_1['value']

for result_2 in the_page.findAll('input', attrs={'name' : '__PREVIOUSPAGE'}):
previous_page = result_2['value']

for result in the_page.findAll('input', attrs={'name' : '__EVENTTARGET'}):
event_target = result['value']

之后:

    url = 'http://bandscore.ielts.org/search.aspx'
values = {
'__EVENTTARGET' : 'gdvSearchResults',
'__EVENTARGUMENT' : page,
'__VIEWSTATE' : view_state,
'__PREVIOUSPAGE' : previous_page,
'__EVENTVALIDATION' : event_validation,
'DropDownList1' : Country,
#'txtSearchInstitution' : '',
#'hdnSearchText' : '',
#'rdoFilter': '%25',
}
user_agent = 'Mozilla/5 (Solaris 10) Gecko'
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
thePage = response.read()
the_page = soup(thePage)

所以这里有几个链接有很好的解释/一些正在提出解决方案:

What does the __VIEWSTATE hold?

http://aspalliance.com/articleViewer.aspx?aId=135&pId=

http://msdn.microsoft.com/en-us/library/system.web.ui.losformatter.aspx

http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx

http://msdn.microsoft.com/en-us/library/ms972976.aspx

Mechanize does not see some hidden form inputs?

Unable to load ASP.NET page using Python urllib2

我意识到很多人都在努力寻找解决这个问题的好方法,所以让我们一起努力寻找一个好的解决方案 ;-)

EDIT1:也发现了,可能很有趣http://code.google.com/p/peekviewstate/source/browse/trunk/src/peekviewstate_example.py

(抱歉,这篇文章不够完美/没有很多有用的信息……我是个菜鸟,但我很努力)

最佳答案

如何处理?只需将 __VIEWSTATE 视为服务器发送给您的不透明数据即可。它包含给定页面的一些特定数据及其对象的状态,我真的不建议您修改它。

如果你想为一些 ASP.NET 应用程序模拟使用浏览器,你需要在 POST 请求中包含那些,这样服务器就可以重建页面的状态。

它导致的具体问题是什么?我认为您的解决方案非常简单。

顺便提一下,很多 ASP.NET 应用程序都包含公共(public) API,可以使用它而不是尝试解析它的页面。

关于asp.net - 如何处理 ASP.net 的神秘隐藏值? (__VIEWSTATE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10338763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com