菜单

[爬虫踩坑]ASP.NET网页上之ViewState和EVENTVALIDATION(还有对的翻页顺序)

2018年10月3日 - 赌博网站开户送88元

近来在攀登一个称作”雅学资讯网”的网站的时候,在翻页的时候发现翻不动,做翻页请求时会见报错。仔细查看了以下发现跟ViewState和EVENTVALIDATION两只东西有关。(两独价值的求实用法自形容于末,如果只有为缓解爬虫问题或者不需对当时有限独价值有极端怪的掌握,所以我事先勾勒下爬虫应该怎样回答)

一律、应本着法

当页面上我们好找到这么一段子div,其中value的价就是是当下页面的ViewState

<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEyODcxMjQ1NjAPZBYCAgMPZBYEAgYPFgIeBFRleHQF9AM8dHI+PHRkIGhlaWdodD0iMTkiIGNsYXNzPSJ0ZXh0MSI+wrc8YSBocmVmPSJodG1sL3NjZGx1bi5odG1sIiB0YXJnZXQ9Il9ibGFuayI+U0NE5rqQ5pyf5YiK6K665paH6K6h566X5qCH5YeGPC9hPjwvdGQ+PHRkIGhlaWdodD0iMTkiIGNsYXNzPSJ0ZXh0MSI+wrc8YSBocmVmPSJodG1sL3NjZGNobi5odG1sIiB0YXJnZXQ9Il9ibGFuayI+U0NE5Lit5paH5rqQ5pyf5YiK562b6YCJ6L+H56iLPC9hPjwvdGQ+PC90cj48dHI+PHRkIGhlaWdodD0iMTkiIGNsYXNzPSJ0ZXh0MSI+wrc8YSBocmVmPSJodG1sL3NjaXNjZGx1bi5odG1sIiB0YXJnZXQ9Il9ibGFuayI+MjAwNH4yMDA55bm0U0NJ44CBU0NE5a2m56eR6Zeo6K665paH5pWwDQo8L2E+PC90ZD48dGQgaGVpZ2h0PSIxOSIgY2xhc3M9InRleHQxIj7CtzxhIGhyZWY9Imh0bWxcc2Npc2NkLmh0bWwiIHRhcmdldD0iX2JsYW5rIj4yMDA0fjIwMDnlubRTQ0njgIFTQ0TkuIDnuqflrabnp5HorrrmlofmlbA8L2E+PC90ZD48L3RyPmQCCg9kFgICAQ8WAh8ABQ8xMjIuMjM1LjIyNy4yMTBkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBQhidG5Mb2dpbgUIYnRuUmVzZXRtFvhkMyHYuQBS5+NctLObmaPtUA==" />
</div>

脚这同段落是EVENTVALIDATION的

<div>

    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="90059987" />
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLii7WQCAKl1bKzCQK1qbSRCwKC3IeGDAKgt7D9Cq786rV3YQHSWN8A2IZl0Z5gnwxM" />
</div>

粗略的话我们把此页面的html解析获取这点儿只价,然后于履行post请求时加至PostData属性里就是足以了。
但是
以翻页的早晚或还会时有发生一个坑,我们偶尔会需要子页面中之内容。这个上子页面爬取的依次就起接触强调了。
正确顺序以第三有,不待看我踩坑过程的直接看第三片。

赌博网站开户送88元 1

image.png

1、流水账顺序(坑)

要我们以下图这样的次第,会发现我们当第一页子页c跳反到第二页的上会砸。

赌博网站开户送88元 2

image.png

2、改良流水账顺序(坑)

赌博网站开户送88元 3

image.png

咱们由地方明了自然要率先页才能够过反第二页,那咱们每次看完子页面都回去一下而免可以呢?
答案是休得以
实在我们的首先页是找请求的来的,或者GET访问得来之,那第一页子页C跳反第一页还是得实现的。但是到了次页子页C跳反第二页的时,我们即便以跳不动了,我们用首先页才能够跳第二页。

![](https://upload-images.jianshu.io/upload_images/11344477-8b3cd927c7703def.png)

image.png
3、先有父页再有所子页(成功)

论我应当的如出一辙页跳二页,二页跳三页的一一爬取(先不管子页面),再攀每一样页时存储好该页的Html或者超越转子页面的音讯,先将拥有父页面爬好,再因地方的消息爬所有子页面。

赌博网站开户送88元 4

image.png

二、ViewState和EVENTVALIDATION的原理

1、ViewState

当求某个页面时,ASP.NET把持有控件的状态序列化成一个字符串,然后做呢窗体的隐藏属性送至客户端。当客户端将页面回传时,ASP.NET分析回传的窗体属性,并授予给控件对应之值。

2、EVENTVALIDATION

“id”属性为“__EVENTVALIDATION”的隐藏字段是ASP.NET
2.0之剧增的安法。该功能可以阻挡由于暧昧的黑心用户从浏览器端发送的未经授权的请求.
为了保每个回发和回调事件源于于所企盼的用户界面元素,ASP.NET运行库将于事变中补充加额外的验证层。服务器端通过检验表单提交请求的内容,将那个同“id”属性也“__EVENTVALIDATION赌博网站开户送88元”隐藏字段被之音进行匹配。根据匹配结果来验证不当浏览器端添加额外之输入字段(有或也用户在浏览器端恶意添加的字段),并且该值是当服务器就知道的列表中摘的。ASP.NET运行库将在扭转期间创建事件说明字段,而及时是极其无容许获得该消息的天天。像视图状态一样,事件作证字段包含散列值为预防产生浏览器端篡改。

相关文章

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图