V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
fowill
V2EX  ›  Python

[技术求助] Linkedin 数据爬取 除了 selenium 有什么好的方法吗? 有关 csrf 的疑惑

  •  
  •   fowill · 2020-11-24 22:00:25 +08:00 · 4040 次点击
    这是一个创建于 1460 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小弟手上的某个学术项目需要 Linkedin 的数据,抓取特定行业的从业人员信息。我是分两步来做的,第一步先弄到想要爬的人主页的 url,第二步再去挨个挨个抓这些 url 上的信息。

    目前第一步已经搞定,可能有几十万条的 url 要抓,但是第二步这里我有点犯难——

    我的理解是这样的:领英的个人数据需要登录后才能展示,为了避免我们的账号被封禁的太快(账号是要成本的),我打算建一个账号 cookies 池,用一个进程维护这些 cookies,其他进程每次爬取时每次随机挑选一个 cookies 去模拟登陆,这样可以延长单个账号的使用时间。

    但是实验中发现,领英做了反 csrf 攻击的措施,仅用 cookies 是没办法实现模拟登陆的。为此我学了下 csrf 相关知识,发现它的关键参数 loginCsrfParam 、csrf_token 都在网页源码中 hidden 了,也会存储到 cookies 里,可以很容易地拿到。

    于是我用 requests 来尝试做模拟登陆,开了一个 Session,把这些关键参数作为表单 post 给领英的登录接口 https://www.linkedin.com/checkpoint/lg/login-submit 后,尝试去 get 我想要抓取的网页,但是还是无法正常显示,get 到的 html 内容为领英网站的加载 gif 。

    我开始觉得是我维护的 cookies 和我 post 的 form-data 中的 csrf 相关参数不匹配,导致服务器端识别出我在尝试 csrf 攻击,但是检查之后发现都是匹配的。这就让我感到奇怪了。

    我目前想用 requests 来做,不希望用 selenium 做自动化登陆,因为部署和账号池维护做起来比较折腾。

    有了解爬虫的前辈能指点下以下问题嘛:

    1.领英的反 csrf 是怎么做的,我的姿势对吗?
    2.领英是否有其他反爬手段?懂行的朋友能不能指点一二?
    3.Google 了一下,网上的领英相关爬虫都陈旧无用了,该上哪里咨询爬虫大佬? stackoverflow 上也没啥有用的建议。

    感激不尽!
    14 条回复    2021-01-27 15:02:12 +08:00
    knightdf
        1
    knightdf  
       2020-11-25 13:13:51 +08:00
    你这么抓需要 JS 的
    wenfan
        2
    wenfan  
       2020-11-25 13:49:24 +08:00
    我已经研究爬 LinkedIn 好几年了……他们家是反爬虫最厉害的一家了
    目前为止,我只找到了这一家网站可以有效地爬,但是效率也不是很高。
    https://phantombuster.com/apis
    fowill
        3
    fowill  
    OP
       2020-11-25 15:40:20 +08:00
    @knightdf 请问此话怎讲,哪里要用到 JS 呢?
    xnth97
        4
    xnth97  
       2020-11-25 15:44:49 +08:00
    完了...你这帖子被我看到了...
    fowill
        5
    fowill  
    OP
       2020-11-25 15:49:32 +08:00
    @xnth97 ?兄弟是 LinkedIn 的?
    fowill
        6
    fowill  
    OP
       2020-11-25 15:51:18 +08:00
    @xnth97 wok 还真是,但我貌似是被贵司的反爬给挡住了,应该没啥关系吧 hhh
    xnth97
        7
    xnth97  
       2020-11-25 15:57:36 +08:00
    @fowill lol 没事我不做反爬哈哈哈
    knightdf
        8
    knightdf  
       2020-11-25 17:31:05 +08:00
    @fowill 数据加载是 JS

    @wenfan 还不太厉害
    lwt7278
        9
    lwt7278  
       2020-12-17 15:27:19 +08:00
    我也遇到了这个问题,目前是 selenium 模拟的登录,大佬,请问你的问题解决了吗
    fowill
        10
    fowill  
    OP
       2020-12-29 00:32:13 +08:00
    @lwt7278 没有 我转用 selenium 来做了,但现在账号死的比较快,不知道怎么解决
    Suthree
        11
    Suthree  
       2020-12-29 19:18:17 +08:00
    主要就是账户的问题,对账户的封禁会比较频繁,阈值较低
    fowill
        12
    fowill  
    OP
       2020-12-30 20:14:26 +08:00
    @Suthree 前辈对此有什么建议嘛,一两个月前领英对这方面还是比较宽松的,一个账号能抓几百个,现在直接干到抓 50 条左右就永久封禁了
    lwt7278
        13
    lwt7278  
       2021-01-06 20:40:17 +08:00
    @fowill 目前未登录,使用大量硬怼中
    xuganggang
        14
    xuganggang  
       2021-01-27 15:02:12 +08:00
    我最近也在做 LinkedIn 的数据抓取,不知道博主是否可以留个联系方式,咱们交流一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 21:07 · PVG 05:07 · LAX 13:07 · JFK 16:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.