zoukankan      html  css  js  c++  java
  • Python模拟登录cnblogs

    Python利用requests.Session对象模拟浏览器登录cnblogs

    request.Session对行可以跨请求的保持cookie,非常方便的用于模拟登录。

    cnblogs登录页面分析:

    登录页面https://passport.cnblogs.com/user/signin

    使用抓包工具fiddler(wireshark无法抓取)可以抓取到登录时post的数据:

    共三个字段,分别是input1、input2和remember(用户名、密码、是否记住登录信息)。

    其中,input1和input2是经过RSA加密后的密文。

    为记住登录状态,我们还需要抓取cookie (注意,要抓取主页的cookie):

    抓到以上必须数据后,就可以模拟浏览器来登录cnblogs,具体代码实现如下:

    #!/usr/bin/python
    # _*_ coding:utf-8 _*_
    import requests
    
    s=requests.Session()
    
    headers={
            'Accept':'application/json, text/javascript, */*; q=0.01',
            'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
            'Referer':'https://passport.cnblogs.com/user/signin',
            'Cookie':'.CNBlogsCookie=B1CB9D692BDF8CE3E5E16C879498AB7E4624CAxxxxxxxxxx4C494C503E65A81B35BBD5C05991503E855C0B917DF1FA1B6C2855821AAE66F474C555653FD8812C6BEA6235FC15E6E6963ABF3716F8B3D8D4B840;_ga=GA1.2.372503701.1486351394'
            }
    
    log_data={
            'input1':'n8utCFvFkeDcjTR2uXy2XtwwVFJX/xxxxxxxxxxw1GrGY1W13otnJGsb6ojcd0N9MHMzbNlp6/jXMryq5wVUk/UOW98X1ZDmtb4k3UmLelQ9ugiHcKdxVherIFLVvXOfCAPsmUDZt5ir09k4svPtrMo6MDHlkEk4qSDDl3EJfnjU=',
            'input2':'B5DjZEwPm2i06iCgiAJe8SU4YlrvrxxxxxxxxIM4ZqCf+WXhjW3Zw9eMfKiZS0ZalnTNGG441vjiIGzzDX/mzmWpMrP9j2ydIqd7bUwLsIyc2ZV4S4THjZp5vgqqxRLbF+kfOGUsQ2VJl1UmFc2S1FSd8i3wdZUol23t0a30=',
            'remember':'false'
            }
    
    url ='https://passport.cnblogs.com/user/signin'
    req=s.post(url,data=log_data,headers=headers)
    print req.status_code
    print req.content.decode('utf-8')
    
    f=s.get('http://www.cnblogs.com/ahaii/diary/2016/01/28/5167172.html',headers=headers)#查看某一篇日记
    print f.status_code
    print f.text

    补充:

    1、关于https加密:

    https即http+ssl加密传输方式,使用443端口,对传输的数据进行加密。

    对称加密与非对称加密:

    对称加密:数据发送和接收端使用同一私钥,较不安全。

    加密:明文+算法+私钥=>密文  解密:密文+算法+私钥=>明文

    非对称加密:数据发送和接收端使用一对密钥(公钥和私钥)对数据加密,二者成对出现。公钥对外公开,私钥保存。

    被公钥加密的密文只能使用私钥解密:

    加密:明文+算法+公钥=>密文  解密:密文+算法+私钥=>明文

    被私钥加密的密文只能使用公钥解密:

    加密:明文+算法+私钥=>密文  解密:密文+算法+公钥=>明文

    2、关于https连接建立过程:

    整个过程中会涉及到三个密钥

    • 服务器端的公钥与私钥,用来进行非对称加密
    • 客户端生成的随机密钥,用来对数据进行对称加密
    1. 客户端发起https请求,用户输入一个https网址以后,访问服务器的443端口
    2. 服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。
    3. 传送证书,也就是公钥,服务端将公钥传给客户端。
    4. 客户端解析证书,客户端收到服务器发过来的公钥以后先要对其有效性进行校验,如果公钥有问题则无法进行https传输,这个公钥也就是服务器发过来的数字证书。如果没有问题,则会生成一个随机值,这个随机值就是对于对称加密的密钥。然后用服务端发过来的公钥对这个随机值(也就是客户端私钥)进行非对称加密,至此,HTTPS中的第一次HTTP请求结束。
    5. 客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
    6. 服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
    7. 然后服务器将加密后的密文发送给客户端。
    8. 客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。
  • 相关阅读:
    情报收集:Metasploit命令、查询网站和测试网站
    Hbase 学习笔记5----hbase region, store, storefile和列簇的关系
    Hbase 学习笔记4----原理
    Hbase 学习笔记3----操作以及维护
    Hbase 学习笔记2----概念
    Hbase 学习笔记1----shell
    Flume日志收集 总结
    Hadoop应用开发实战案例 第2周 Web日志分析项目 张丹
    2016.4.9-关于“放生”反而促进“捕猎”的思考
    Hadoop应用开发实战案例 第1周 基本介绍
  • 原文地址:https://www.cnblogs.com/ahaii/p/6370878.html
Copyright © 2011-2022 走看看