zoukankan      html  css  js  c++  java
  • python模拟登陆实践

    对于一些需要登陆的网址爬取数据,需要登录才能访问。本文介绍如何利用python进行模拟登陆

    准备工具:  

      1.搭建django 框架 用于模拟登陆

      2.fiddler抓包工具,chrome浏览器

      3.pycharm   编辑器

    步骤:

      1.开启django 服务,这里就不多描述,直接百度一下,就能找到很多答案(记得创建一个superuser,以便后面的登陆 )

        进入 http://127.0.0.1:8000/admin/     这是django自带的后台,进行登陆时,django自带了  csrf 跨站脚本攻击的防御系统,这里进入浏览器的调试模式,找到csrf 所在标签下的value值

        

    django通过改变这个value值,来达到防止跨站攻击的效果。

      

      2.用先前创建的superuser账号 123   zxc123456进行登陆,同时使用fiddler进行抓包

    这里就是进行表单提交时需要的参数

    # coding=utf-8
    import requests
    from lxml import etree
    
    # 请求头也可以从fiddler中直接复制过来,按照字典的格式
    headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
               'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36',
               'Accept-Encoding': 'gzip, deflate',
               'Accept-Language': 'zh-CN,zh;q=0.8',
               }
    
    
    # 建立一个会话,可以把同一用户的不同请求联系起来;直到会话结束都会自动处理cookies
    session = requests.Session()
    
    
    def get_xsrf():
        """
        获取参数
        """
        response = session.get('http://127.0.0.1:8000/admin', headers=headers)
        html =response.text
        selector = etree.HTML(html)
       
      # 这里我是通过xpath获取value值,也可以通过正则表达式 _xsrf
    = selector.xpath('//*[@id="login-form"]/input/@value') print _xsrf,html return _xsrf def login(): # url通过fiddler抓取登陆时的url url = 'http://127.0.0.1:8000/admin/login/?next=/admin/' data = {'csrfmiddlewaretoken': get_xsrf(), 'username': 123, 'password': 'zxc123456', }   # 带表单的post请求 result = session.post(url, data=data, headers=headers)   # 登陆成功后可以通过 请求需要登陆的地址进行测试
    # result2 = session.get('url',headers=heders)
      # print result2.text
    print result.text if __name__ == '__main__': login()

    登陆成功,接下来就可以爬取你想要的数据了

  • 相关阅读:
    mac+chrome 最常用快捷键
    关于<form> autocomplete 属性
    MAC vim修改hosts文件
    git 使用详解(3)—— 最基本命令 + .gitignore 文件
    git 使用详解(2)——安装+配置+获取帮助
    vue动态生成组件
    slot插槽
    provide 和 inject高阶使用
    js正则验证表达式验证
    angular常用命令整理
  • 原文地址:https://www.cnblogs.com/jinjidedale/p/7127696.html
Copyright © 2011-2022 走看看