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
leafonsword
V2EX  ›  Python

python-requests 如何通过 linkedin 验证?

  •  
  •   leafonsword ·
    leafonsword · 2014-07-22 16:07:13 +08:00 · 6508 次点击
    这是一个创建于 3781 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想抓取linkedin上的页面,但如下代码却无法通过登录验证:
    ```
    #/usr/bin/env python3
    import requests
    from bs4 import BeautifulSoup


    payload = {
    'session-key': '我的账户',
    'session-password': '我的密码'
    }

    URL = 'https://www.linkedin.com/uas/login?goback=&trk=hb_signin'
    s = requests.session()
    s.post(URL, data=payload)

    r = s.get('http://www.linkedin.com/nhome')
    soup = BeautifulSoup(r.text)
    print(soup)

    ```
    请问哪里出了问题?
    13 条回复    2015-02-21 11:06:53 +08:00
    cdwyd
        1
    cdwyd  
       2014-07-22 16:23:37 +08:00
    很少有直接一个用户名+密码就能登陆的吧。
    post里面应该还有csrf token什么的字段吧
    leafonsword
        2
    leafonsword  
    OP
       2014-07-22 16:58:41 +08:00
    @cdwyd
    python不熟,能帮我把linkedin的登陆试出来吗?谢谢!
    est
        3
    est  
       2014-07-22 17:09:08 +08:00
    @leafonsword 首先,你得有一个24k镀金的肥皂。
    wenLiangcan
        4
    wenLiangcan  
       2014-07-22 18:00:27 +08:00
    有些名称什么的好像错了
    session_key
    session_password
    URL = 'https://www.linkedin.com/uas/login-submit'

    不过我没试哦。。。
    cdwyd
        5
    cdwyd  
       2014-07-22 18:52:49 +08:00   ❤️ 1
    import requests
    from bs4 import BeautifulSoup

    s = requests.session()
    r = s.get('https://www.linkedin.com/')
    soup = BeautifulSoup(r.text)
    loginCsrfParam = soup.find('input', id = 'loginCsrfParam-login')['value']
    csrfToken = soup.find('input', id = 'csrfToken-login')['value']
    sourceAlias = soup.find('input', id = 'sourceAlias-login')['value']


    payload = {
    'session_key': '[email protected]',
    'session_password': 'pass',
    'loginCsrfParam' : loginCsrfParam,
    'csrfToken' : csrfToken,
    'sourceAlias' : sourceAlias
    }


    s.post('https://www.linkedin.com/uas/login-submit', data=payload)
    print(s.get('http://www.linkedin.com/nhome').text)
    leafonsword
        6
    leafonsword  
    OP
       2014-07-22 20:28:26 +08:00
    @cdwyd
    谢谢
    leafonsword
        7
    leafonsword  
    OP
       2014-07-22 20:28:55 +08:00
    @est
    禽兽
    leafonsword
        8
    leafonsword  
    OP
       2014-07-22 20:30:09 +08:00
    @est
    看看人家@cdwyd,多好,给出代码了
    iptux
        9
    iptux  
       2014-07-22 20:36:58 +08:00
    已block不谢
    zjgood
        10
    zjgood  
       2014-07-22 20:49:27 +08:00 via Android
    @iptux b就b了,说出来好伤人。不要打击新人。唉,中国人的劣根性,你我都差不多,不过我在尽量改正。
    est
        11
    est  
       2014-07-22 20:53:55 +08:00
    @leafonsword 好吧。伸手也会偶尔碰到一个答案的。已block
    leafonsword
        12
    leafonsword  
    OP
       2014-07-24 19:53:55 +08:00
    @iptux @est
    ”已block“什么意思?
    bnpysse
        13
    bnpysse  
       2015-02-21 11:06:53 +08:00
    @cdwyd 不错地说!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5369 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.