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

爬虫模拟登录的问题

  •  
  •   insaneDream · 2015-04-18 15:12:35 +08:00 · 3706 次点击
    这是一个创建于 3500 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://ww2.sinaimg.cn/large/74cae53fgw1er9qef10uvj21iu08641q.jpg
    遇到这些数据如何post(校园网爬虫)

    16 条回复    2015-04-19 11:55:00 +08:00
    lk09364
        1
    lk09364  
       2015-04-18 15:17:48 +08:00
    base64,不是的话分析JS 啊。
    mV2GK
        2
    mV2GK  
       2015-04-18 15:30:10 +08:00
    应该是base64编码后的。。。
    Septembers
        3
    Septembers  
       2015-04-18 16:53:54 +08:00
    ASP.Net Web Forms
    需要处理的信息/问题比较多
    1. cookies
    2. headers
    3. 隐藏的表单域(ViewState, __EVENT*)
    4. 等等
    Comdex
        4
    Comdex  
       2015-04-18 19:22:30 +08:00
    正方教务系统?
    zts1993
        5
    zts1993  
       2015-04-18 19:34:58 +08:00 via Android
    ViewState

    先抓取页面上的ViewState使用同样的Cookie信息登陆,
    p1n3
        6
    p1n3  
       2015-04-18 19:43:10 +08:00 via iPhone
    ASP.net web form 就是这个鸟样。。
    把隐藏域里的值匹配出来,然后再post
    insaneDream
        7
    insaneDream  
    OP
       2015-04-18 20:37:09 +08:00
    @Comdex 嗯。。。是的
    latteczy
        8
    latteczy  
       2015-04-18 21:14:12 +08:00
    直接复制,然后post就行
    insaneDream
        9
    insaneDream  
    OP
       2015-04-19 00:43:34 +08:00
    @latteczy 试过。。。不行。。。
    ericls
        10
    ericls  
       2015-04-19 00:53:53 +08:00 via Android
    @makubx1 你有用session的话 可以先访问表格 获取到这些值 再post
    donghouhe
        11
    donghouhe  
       2015-04-19 01:06:19 +08:00 via Android
    http头host有没有加?python默认不带host
    pi1ot
        12
    pi1ot  
       2015-04-19 01:17:09 +08:00
    末尾带等号的字母数字多半是BASE64
    lincanbin
        13
    lincanbin  
       2015-04-19 01:25:02 +08:00   ❤️ 1
    viewstate
    asp.net里的,是form校验用的,不是不标准的base64,解码后也只是form的内容,所以没有必要解码。
    抓取登录页的input里的这些数据后原样提交。
    lincanbin
        14
    lincanbin  
       2015-04-19 01:25:23 +08:00
    不是标准的base64
    zsx
        15
    zsx  
       2015-04-19 10:37:00 +08:00   ❤️ 1
    ASP.NET的WebForm各种神奇的内容挺多的=_=
    我记得我的做法是第一次访问时匹配<input type="hidden" name="__XXXX"的隐藏域取出value,然后保存Cookie里所有数据。以后再抓取时,把页面的特殊参数填好后,直接加上这些保存好的数据作为验证即可。
    Septembers
        16
    Septembers  
       2015-04-19 11:55:00 +08:00 via Android
    @zsx 我当时折腾的时候被这个差点搞疯,检查参数相当多,还要维护很多状态
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2823 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:17 · PVG 16:17 · LAX 00:17 · JFK 03:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.