python实现自动登录后台管理系统


Posted in Python onOctober 18, 2018

本文实例为大家分享了python实现自动登录后台管理系统的具体代码,供大家参考,具体内容如下

首先感谢下网络上的各位大神和博主,通过学习各位大神的文章,才实现了该脚本

①首先浏览器运行真是系统通过fiddler抓包,抓取到登录地址(后面的地址和头部信息等都是通过fiddler抓取的)

python实现自动登录后台管理系统

并获取头信息,header信息里面Accept-Encoding: gzip, deflate去掉吧,免得后面提取页面的url时无法解码,通过代码实现后,这个时候回返回html文本,从文本里面获取下一步要进入的系统的地址,这个地址已经附上cookie即token了,只有经过了这一步请求,才能进行下一步的对系统里面的内容进行操作(之前没有经过这一步,就进行了具体操作的url请求,总是返回重定位到登录界面)。

②然后再进行这个带token的url的请求

③请求完成后即可进行想要的操作了

下面直接上代码,有一些信息是公司的信息,我直接屏蔽换成通用字符串

# coding=utf-8
import urllib.request
import urllib
import http.cookiejar
from database_functions import *
import re
 
 
# 正则表达式匹配规则
regx = re.compile(r'(.*)(href=\")(.*)(\"\starget=.*bms.*)')
 
 
# 定义一个方法用于生成请求头信息,处理cookie
def getopener(head):
 
  cj = http.cookiejar.CookieJar()
  pro = urllib.request.HTTPCookieProcessor(cj)
  opener = urllib.request.build_opener(pro)
  header = []
  for key, value in head.items():
    elem = (key, value)
    header.append(elem)
  opener.addheaders = header
  return opener
 
 
def modify_appeal_status_pass(phone):
 
  index, status = get_appeal_by_phone(phone)
  # 封装头信息,伪装成浏览器
  header = {
    'Connection': 'Keep-Alive',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Accept': 'application/json, text/javascript,text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
    'Host': 'xxx.xxx.xxx',
  }
 
  # 登录地址
  login_url = 'http://xxx.xxx.xxx/xx-xxx/login.do'
 
  # request封装cookie和头信息
  opener = getopener(header)
  urllib.request.install_opener(opener)
 
  username = '***' # 你的用户名
  password = '***' # 你的密码
  postdict = {
    'username': username,
    'password': password
  }
 
  # 登录请求
  postdata = urllib.parse.urlencode(postdict).encode('utf-8')
  login_response = urllib.request.Request(login_url, data=postdata, headers=header) #登录系统
  login_webpage = urllib.request.urlopen(login_response)
  # 返回的html页面
  login_data = login_webpage.read().decode()
 
  # 获取系统地址
  bms_url = regx.findall(login_data)[0][2]
  # 请求xxxx
  bms_response = urllib.request.Request(bms_url, headers=header)
  bms_webpage = urllib.request.urlopen(bms_response)
  # 返回的系统后台页面
  bms_data = bms_webpage.read().decode()
 
  # 对xx状态进行修改
  update_url = "http://xxx.xxx.xxx/xxx/xxx/xxx/xxx/{index}".format(index=index)
  update_response = urllib.request.Request(update_url, headers=header)
  update_webpage = urllib.request.urlopen(update_response)
  update_data = update_webpage.read().decode()
  print(update_data)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
低版本中Python除法运算小技巧
Apr 05 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
使用Python对Csv文件操作实例代码
May 12 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
python 实现矩阵填充0的例子
Nov 29 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
Mar 30 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 #Python
python实现简单登陆系统
Oct 18 #Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 #Python
python字典值排序并取出前n个key值的方法
Oct 17 #Python
Python中创建二维数组
Oct 17 #Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 #Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 #Python
You might like
也谈截取首页新闻 - 范例
2006/10/09 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
Python的argparse库使用详解
2018/10/09 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
PyTorch安装与基本使用详解
2020/08/31 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
清洁工表扬信
2014/01/08 职场文书
运动会稿件200字
2014/02/07 职场文书
公司经理聘任书
2014/03/29 职场文书
创先争优公开承诺书
2014/08/30 职场文书
学校运动会加油词
2015/07/18 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python