zoukankan      html  css  js  c++  java
  • Python脚本模拟登录网页之CSDN篇

    1. 通过Firefox配合插件Tamper Date获取登录时客户端向服务器端提交的数据, 并且发现lt和execution这两个字段每次登录时都不一样.

    POSTDATA=username=your_id&password=your_pwd&lt=LT-239317-XyzqoketZ2AhHE5BSIKLwW7gNyb4sP&execution=e2s1&_eventId=submit

    2.  于是查看https://passport.csdn.net/account/login?ref=toolbar的网页源代码, 发现有相应注释:

    ...
    <!-- 该参数可以理解成每个需要登录的用户都有一个流水号。只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程。否则,没有流水号的情况下,webflow会认为用户还没有进入webflow流程,从而会重新进入一次webflow流程,从而会重新出现登录界面。 -->
                        <input type="hidden" name="lt" value="LT-20682-CNLFEebzNFkqC7PUQded5V6b7j3Qd9" />
                         <input type="hidden" name="execution" value="e13s1" /> 
                        <input type="hidden" name="_eventId" value="submit" /> 
    ...

    最后附上代码:

    import re
    import requests
    url="https://passport.csdn.net/account/login"
    head={
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
    }
    s=requests.session()
    r=s.get(url,headers=head)
    lt_execution_id=re.findall('name="lt" value="(.*?)".*sname="execution" value="(.*?)"', r.text, re.S)
    payload={
        "username":"your_id",
        "password":"your_pwd",
        "lt":lt_execution_id[0][0],
        "execution":lt_execution_id[0][1],
        "_eventId":"submit"
    }
    r2=s.post(url,headers=head,data=payload)
    print r2.text    #登录成功会返回一段loginapi.js的脚本
    print "*"*100    #分隔符
    r3=s.get("http://my.csdn.net",headers=head)
    print r3.text    #成功获取"我的主页"源代码
  • 相关阅读:
    MYSQL数据库间同步数据
    mysqld-nt: Out of memory (Needed 1677720 bytes)解决方法
    Apache优化:修改最大并发连接数
    MySql 存储过程实例(附完整注释)
    android loadlibrary 更改libPath 路径,指定路径加载.so
    如何在ANDROID JNI 的C++中打Log
    递归转手工栈处理的一般式[C语言]
    计算机语言学习导论[C/C++]
    程序错误[C/C++]
    访问栈为什么会比访问堆快?
  • 原文地址:https://www.cnblogs.com/IvanChen/p/5314318.html
Copyright © 2011-2022 走看看