2

我需要从这个网站获得一些价值。基本上我需要获得每个城市的区域。我为此使用 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 上。

请帮我

4

2 回答 2

1

您必须在一个会话调用中获取并传递__VIEWSTATEand__EVENTVALIDATION变量,否则在重新打开与服务器的连接时进行第二次 POST 调用时,它希望已经收到另一个__VIEWSTATEand __EVENTVALIDATION

所以基本上逻辑应该如下:

  • curl_init()
  • curl GET __VIEWSTATE 和 __EVENTVALIDATION
  • *这里有一些逻辑*
  • curl POST 解析出 __VIEWSTATE 和 __EVENTVALIDATION
  • *这里有一些逻辑*
  • curl_close();
于 2013-02-06T16:48:02.960 回答
0

尝试添加__REQUESTDIGEST表单字段,它是 Sharepoint 使用的验证字段。此外,添加带有状态的选择元素的名称作为__EVENTTARGET字段的值:

__EVENTTARGET   ctl00$ctl25$g_4828177f_5427_4b0f_a968_ad02dc3674ec$ctl01$ddlState
__REQUESTDIGEST 0xDF6A6E14C550004C4A8533A9F5D...,14 Jun 2012 10:13:34 -0000
于 2012-06-14T10:32:05.420 回答