当前位置: 首页 > news >正文

电子业网站建设/网站关键词优化教程

电子业网站建设,网站关键词优化教程,套系网站怎么做,免备案的网站建设一、背景说明 之前写了一款简单的api模糊测试工具,之前系统可以使用http Base认证现在改成session形式并加上了token。 最简单的改造方法,是自己先在浏览器手动登录,然后提取出session和token(系统token在整个会话期间可重复使用&…

一、背景说明

之前写了一款简单的api模糊测试工具,之前系统可以使用http Base认证现在改成session形式并加上了token。

最简单的改造方法,是自己先在浏览器手动登录,然后提取出session和token(系统token在整个会话期间可重复使用)填到模糊测试工具中即可。但这种非全自动化的方式不到万不得已不想用。

最直接的方法,最使用requests按登录流程依次发包登录即可。但其中的难点是密码是加密提交的,询问开发人员说是DES加密;DES加密不难,但是用不同的语言编写的加密算法与别人的结果完全一致那就比较费工夫。

最后的方法,那就是使用selenium登录避开密码的构造,这种方法的关键点在于:selenium是基于图形界面操作的,没有直接的办法能获取request和response的数据包,在这种情况下如何获取session和token。

自己动web前端的存储并没有很深入了解,一直想的是如何获取selenium request和response的数据包从中提取session和token,直到看到这篇文章才想起前端的变量(尤其是restful中的全局变量)会放存localStorage和sessionStorage中,从中提取session和token即可。

 

二、环境搭建

2.1 下载驱动

下载驱动文件,放到后续python文件同级目录下或加入到环境变量中即可。其中Chrome驱动要注意Driver版本与浏览器版本对应要求。

Firefox驱动下载地址:https://github.com/mozilla/geckodriver/releases

Chrome驱动下载地址:http://chromedriver.chromium.org/downloads

Safari驱动下载地址:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Edge驱动下载地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

 

2.2 安装selenium

pip install selenium

 

三、程序实现

3.1 系统状况

手动登录系统后,查看存储状况如下图所示,sessionid和token分别存储在sessionStorage的sessionId和token两个变量中

 

3.2 实现代码

import json
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import Byclass GetSessionAndToken():def __init__(self):# 启用无头模式,可选browser_options = webdriver.FirefoxOptions()browser_options.add_argument('--headless')browser_options.add_argument('--disable-gpu')self.browser = webdriver.Firefox(firefox_options=browser_options)# self.browser = webdriver.Chrome()# 登录系统,具体到自己系统时需要自行修改def login_system(self):# 登录用户名密码,改成目标系统用户名密码username = "admin"password = "123456"# 登录页面url,改成目标系统登录页面url = "https://10.10.6.93/#login"self.browser.get(url)# 显性等待,直到用户名控件加载出来才进行下一步WebDriverWait(self.browser,20,0.5).until(EC.presence_of_element_located((By.ID,"txtUserName")))# 填写用户名self.browser.find_element_by_id("txtUserName").send_keys(username)# 填写密码self.browser.find_element_by_id("txtPassword").send_keys(password)# 点击登录self.browser.find_element_by_id("btnLogin").click()# 强制等待5秒,待session和token都成功返回并存到浏览器中# restful隐性等待不太好用?self.browser.implicitly_wait(5)time.sleep(5)# 获取sessioniddef get_sessionid(self):# 是要从localStorage中获取还是要从sessionStorage中获取,具体看目标系统存到哪个中# window.sessionStorage和直接写sessionStorage是等效的# 一定要使用return,不然获取到的一直是None# get的Item不一定就叫sessionId,得具体看目标系统把sessionid存到哪个变量中sessionid = self.browser.execute_script('return sessionStorage.getItem("sessionId");')# 另外sessionid一般都直接通过返回Set-Cookies头设置到Cookie中,所以也可以从Cookie读取# 获取浏览器所有Set-Cookie,返回对象是字典列表# cookies = self.browser.get_cookies()# 获取单项Cookie,是不是叫sessionId取决于系统存成什么变量,单项Cookie是字典# cookie = self.browser.get_cookie("sessionId")# cookie = cookie["value"]# print(f"{cookies}")return sessionid# 获取tokendef get_token(self):# 是要从localStorage中获取还是要从sessionStorage中获取,具体看目标系统存到哪个中# window.sessionStorage和直接写sessionStorage是等效的# 一定要使用return,不然获取到的一直是None# get的Item不一定就叫token,得具体看目标系统把token存到哪个变量中token = self.browser.execute_script('return sessionStorage.getItem("token");')# print(f"{token}")return tokendef __del__(self):# 退出程序时关闭浏览器
        self.browser.close()if __name__ == "__main__":obj = GetSessionAndToken()obj.login_system()sessionid = obj.get_sessionid()token = obj.get_token()print(f"sessionid为: {sessionid}\n"f"token为:     {token}")

 

3.3 实现效果

 

参考:

https://pypi.org/project/selenium/

http://www.runoob.com/jsref/prop-win-localstorage.html

https://blog.csdn.net/sinat_34209942/article/details/81235925

https://stackoverflow.com/questions/44102520/python-selenium-local-storage-returns-none

转载于:https://www.cnblogs.com/lsdb/p/10515759.html

http://www.jmfq.cn/news/5088619.html

相关文章:

  • 自适应网站导航是怎么做的/外链互换平台
  • 做pc端的网站首页尺寸是多少/bt磁力王
  • 杭州政府网站建设/重庆seo关键词优化服务
  • wordpress rss静态化/seo优化怎么做
  • ubuntu vps wordpress/网站内部优化有哪些内容
  • 万万州州微微网站网站建建设设/手机关键词点击排名软件
  • 定州市住房和建设局网站/整站优化seo
  • 广东省建设工程执业中心网站/整合营销案例
  • 做律师事务所网站/百度广告费
  • 大型电子商务网站建设公司/网络热词2021流行语
  • 宝鸡做网站公司/北京优化推广公司
  • 自己建网站做外贸/seo和sem的区别
  • 发布网站需要备案/我想做网络推广找谁
  • 网站公众平台建设方案/seo优化一般多少钱
  • 黄埔b2b网站建设公司/全球最牛的搜索引擎
  • 江油建设局网站/seo推广策划
  • 网站浮动窗口怎么设置/网络营销策划推广公司
  • 网站建设技术方面/哪个平台可以接推广任务
  • 做网站的怎么获取客户信息/企业培训体系
  • 清华大学精品课程网站/达内教育
  • 香港即时新闻最新消息/搜索引擎seo关键词优化
  • 陕西营销型网站建设公司/互联网电商平台
  • 图书馆网站建设/昆山网站建设
  • 网站开发设计的技术/营销型网站和普通网站
  • 济宁网上做科目一的网站/怎么开网店新手入门
  • 东莞市住房建设局网站/怎么创建自己的网站平台
  • vps做电影网站/seo工作职位
  • 在网站后台设置wap模板目录/品牌咨询
  • 网站建设实例大制作/网络营销策划书包括哪些内容
  • 泉州模板自助建站/做网站需要多少钱 都包括什么