Skip to main content
 首页 » 编程设计

asp.net之抓取 asp.net 页面时出现 EVENTVALIDATION 错误

2025年05月04日16zhwl

我需要从这个 website 中获取一些值.基本上我需要获得每个城市的区域。我为此使用 Python 和 beautifulsoup。我正在做的是:

  1. 首先向此页面发出 Get 请求,然后获取 __VIEWSTATE 和 __EVENTVALIDATION 以发出 POST 请求以获取特定州的城市。直到这里正常工作,我正在获取每个州的城市。

  2. 要获得区域,我需要使用新的 __VIEWSTATE 和 __EVENTVALIDATION 进行另一个 POST,这次我还需要发送带有其他参数的城市。但是我在这里遇到错误:

505|error|500|Invalid postback or callback argument.  Event validation 
is enabled using <pages enableeventvalidation="true"> in configuration 
or <%@ Page EnableEventValidation="true" %> in a page.  For security 
purposes, this feature verifies that arguments to postback or callback 
events originate from the server control that originally rendered 
them.  If the data is valid and expected, use the 
ClientScriptManager.RegisterForEventValidation method in order to 
register the postback or callback data for validation.|</pages> 

我已经检查了 firebug 中的每个参数/参数,我需要发送这些参数来获取相应城市的区域,但没有成功。根据我的说法,问题可能出在 __VIEWSTATE 或 __EVENTVALIDATION 上。

请帮帮我

请您参考如下方法:

您必须在一次 session 调用中获取并传递 __VIEWSTATE 和 __EVENTVALIDATION 变量,否则在执行第二次 POST 调用时会重新打开与它期望接收的服务器的连接已经返回另一个 __VIEWSTATE 和 __EVENTVALIDATION!

所以基本上逻辑应该是这样的:

  • curl_init()
  • curl GET __VIEWSTATE 和 __EVENTVALIDATION
  • *这里有一些逻辑*
  • curl POST 解析出 __VIEWSTATE 和 __EVENTVALIDATION
  • * 这里有一些逻辑 *
  • curl_close();