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中MethodType方法介绍与使用示例
Aug 03 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
python字典操作实例详解
Nov 16 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
python代码过长的换行方法
Jul 19 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
python直接获取API传递回来的参数方法
Dec 17 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
python基于openpyxl生成excel文件
Dec 23 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
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
PDO::_construct讲解
2019/01/27 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
Vue列表渲染的示例代码
2018/11/01 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
项目经理的岗位职责
2013/11/23 职场文书
护士的自我鉴定
2014/02/07 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
社会实践的活动方案
2014/08/22 职场文书
单位委托书怎么写
2014/09/21 职场文书
大雁塔英文导游词
2015/02/10 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL