解决IT桔子爬虫的登录问题

IT桔子是关注IT互联网行业的结构化的公司数据库和商业信息服务提供商,里面有很多有用的信息。于是,我又想爬IT桔子?来提升一下我的爬虫技术了。(注意:IT桔子有用户校验机制,没有购买VIP的用户很多信息是看不到的)

我选择爬取IT桔子网站上的公司,爬虫入口地址,一开始爬虫是很顺利的,爬虫的数据放在MongoDB里面

MongoDB中存放的部分数据

但是很快,就碰到了IT桔子的反爬虫,一查才知道,原来是自己的ip访问过于频繁,被IT桔子ban了。于是,我购买了一个代理IP池,不停切换IP来运行爬虫,果然顺利了很多。

果然我还是太年轻,以为买了代理ip就解决问题了,很快我再次被ban了,但是通过页面上登录可以正常进入。查一下我找到了原因:我的cookie信息过期了

我观察了一下爬虫请求的headers。

headers里面判断身份是cookie与authorization两个字段,其中cookie字段里面最关键的是acw_tc参数。

观察发现,acw_tc应该是一个字母与数字组合的随机字符串。并且长度应该是62位,可以直接用Python生成随机的62位字符串得到cookie字段。

拿到cookie后,缺少authorization字段,好像也没有什么用。我试着去登录了一下:IT桔子登录界面入口

启用F12开发者工具抓包

左侧是登录后的页面,右侧是网络请求信息

可以看到一个名为authorization的请求,点进去进行分析,在接口的response里可以看到这些信息。

response信息

可以看到,这个接口向我们返回了一个token,这个token的value前面有一个‘bearer’和前面看到的authorization一样,因此初步判断,这个接口应该就是使用cookie中的acw_tc值获得authorization的方法。

拿到cookie与authorization两个参数后,包装成一个headers,再向文章开头的地址发送请求,结果通了,说明我们生产的headers生效了。

这里还是花了一点心思的,但是问题解决的时候也很开心,目前已经可以稳定的爬虫了。

另外,在向身边的安全测试工程师沟通的过程中了解到了一些web安全方面的知识,除了这种方法动态获得headers,还可以把用户名密码放到selenium中,间隔一段时间出发一些点击事件,让后台服务器误以为这个用户一直在浏览,延长账号密码的生命周期。但是这里我没有时间再尝试了,快速拿到数据进行分析对我来说是最重要的。

心得:

  1. 爬虫过程中遇到的问题,通常不能一次解决掉,总是在过程中不停遇到问题,不停解决。
  2. 爬虫与反爬虫的斗争,最后一定是爬虫获胜。因为反爬虫再怎么严厉,也一定不会反用户。

The End


已发布

分类

评论

《“解决IT桔子爬虫的登录问题”》 有 8 条评论

  1.  的头像
    匿名

    你好,发现一直报错400,什么原因?{“status”:”error”,”code”:400,”message”:”\u9700\u8981\u5f00\u901aVIP”}
    acw_tc=IUXnM4Wg1h0bNZsBFfq2iVrCKjxzQAkaT8OyERvdwoHtJDLYGeSpl9573umPc6;
    遇到了反爬虫3,休息10秒,重新生成headers

  2. Lance 的头像
    Lance

    你好,发现一直报错400,什么原因?{“status”:”error”,”code”:400,”message”:”\u9700\u8981\u5f00\u901aVIP”}
    acw_tc=IUXnM4Wg1h0bNZsBFfq2iVrCKjxzQAkaT8OyERvdwoHtJDLYGeSpl9573umPc6;
    遇到了反爬虫3,休息10秒,重新生成headers

    1. monk 的头像
      monk

      你好,感谢回复。你的账号是VIP账号吗?IT橘子浏览数据需要购买VIP才可以

  3. Lance 的头像
    Lance

    感觉cook的拼接方法又变了…求楼主指导

  4.  的头像
    匿名

    可以了,楼主厉害,点赞!!!

    1. monk 的头像
      monk

      谢谢,欢迎继续交流,一起进步。

  5. ospider 的头像
    ospider

    早就失效了

    1. monk 的头像
      monk

      IT橘子反爬虫策略经常变的,这个文章有一段时间没有维护了

回复 匿名 取消回复

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