当爬虫遇到CSRF 验证(__RequestVerificationToken)

    __RequestVerificationToken 存在在POST 的表单中(图1),其是为了防止CSRF 跨站攻击。但我们在爬虫时候,需求通过提交POST 表单以获取数据时候,如何破解CSRF呢?


图1 post 表单

下面以某货运航空网站为例(https://comisportal.thy.com/public/shipment-tracking-public)。

第一步 寻找__RequestVerificationToken 值

用Python的requests 的请求查询界面的URL,respond 得到的HTML。


图2 查询界面

在浏览器端查询网页源代码,仔细检查网页源代码。

图3  网页源代码

我们可以发现在一个name="__RequestVerificationToken" input标签,与图一中的表单数据csrf  的命名一致, 其对应的值就input 的value 属性。利用Python 的 HTML 元素的筛选工具(Xpath, pyquest, 正则.....自由发挥),得到value的值。

第二步 构造POST 请求

构造requests POST 请求:header  将得到的value 放入post 的表单中,提交。

你可能感兴趣的:(当爬虫遇到CSRF 验证(__RequestVerificationToken))