当爬虫遇到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 的表单中,提交。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,604评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 开不开心是别人的事,不能因为你希望别人开心别人就要开心给你看。 该不该笑也是别人的事,不能因为你希望别人笑别人就要...
    原来我还是个病孩子阅读 359评论 0 0
  • 今天阳光真好,抛去那些琐碎事,和朋友出去散散心。 今年的冬天有点忙! 忙着毕业、考研、考证、和就业。前面的路究竟通...
    bc2a5be351b8阅读 319评论 0 0
  • 过年在同学群里聊天,突然大家猝不及防的让我请客吃饭。我眉头一皱,发现事情并不简单。自己又没中彩票,又不过生日,又没...
    强强说阅读 441评论 1 1