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 相关文章推荐
Python使用新浪微博API发送微博的例子
Apr 10 Python
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
PyMongo安装使用笔记
Apr 27 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python实现简易Web爬虫详解
Jan 03 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 Python
Python的信号库Blinker用法详解
Dec 31 Python
python基于opencv批量生成验证码的示例
Apr 28 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
webpack3之loader全解析
2017/10/26 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
Python Json序列化与反序列化的示例
2018/01/31 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
秋季运动会通讯稿
2014/01/24 职场文书
事假请假条范文
2014/04/11 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python