请教 Python 爬虫模拟 Login 时的错误排查 - V2EX
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
braineo
V2EX    Python

请教 Python 爬虫模拟 Login 时的错误排查

  •  
  •   braineo 2016-01-04 13:43:04 +08:00 3165 次点击
    这是一个创建于 3593 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在试着爬银行帐单的网页,需要 Login

    Login 是一个 AJAX 的 POST ,在用 Chrome 抓包分析了 Header 跟 Payload 之后,用 POSTMAN 验证了

    header 需要
    X-Requested-With
    User-Agent
    Content-Type

    Payload 需要
    requestTimestamp
    user
    password

    用 POSTMAN 加上以上字段进行试验,可以得到 200 的返回,一切正常

    后用 Python 的 Requests 库写了一个爬虫 用了 Session

    s = requests.Session()
    r = session.post(login_url, params=login_payload, headers=login_header, allow_redirects=True)

    login_payload 和 login_header 里的数据与 POSTMAN 里用的一样,但是却是 500 的返回

    想请教一下排查思路,如果做法有误也请不吝指出
    9 条回复    2016-01-04 21:54:37 +08:00
    Strikeactor
        1
    Strikeactor  
       2016-01-04 13:47:51 +08:00   1
    shidenggui
        2
    shidenggui  
       2016-01-04 13:54:29 +08:00   1
    用 OrderedDict 指定下参数顺序看下,有些网站会检查这个,不过概率很低。
    最好你打下 requests 的 log 跟你发送的对比下看看
    Caratpine
        3
    Caratpine  
       2016-01-04 14:02:20 +08:00   1
    有可能是 login 这个请求之前,网站加载了另外一些请求,这些请求当中有可能 set 了一些必要的 cookie
    braineo
        4
    braineo  
    OP
       2016-01-04 14:28:19 +08:00
    @Strikeactor 好工具
    braineo
        5
    braineo  
    OP
       2016-01-04 14:28:50 +08:00
    @shidenggui 下班回去试试
    braineo
        6
    braineo  
    OP
       2016-01-04 14:29:45 +08:00
    @Caratpine 原来如此,还有这种可能。这是一种防爬的机制么?
    Caratpine
        7
    Caratpine  
       2016-01-04 14:40:39 +08:00
    @braineo 我觉得算是一种吧,我之前也抓过一个网站,在加载一个 js 文件的时候 set 了一个必要的 cookie ,我之前用的验证工具如果不清理本地 cookie 的话,即使你模拟的 header 里面没有加 cookie ,这个工具也会在模拟的时候读取你的本地 cookie ,比较坑爹,所以我觉得你这种情况和我之前遇到的问题很类似。
    dapang1221
        8
    dapang1221  
       2016-01-04 14:59:20 +08:00 via Android   1
    直接抓爬虫的流量,和正常访问比较一下
    braineo
        9
    braineo  
    OP
       2016-01-04 21:54:37 +08:00
    @Caratpine 就是这个 cookies 的问题啊……坑死人了,用 POSTMAN 的时候会从浏览器里抽 Cookies 但是自己模拟的话就缺了这个,现在好了 200 了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     928 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 21:43 PVG 05:43 LAX 13:43 JFK 16:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86