__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 的表单中,提交。
网友评论