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

Python从请求头中获取参数(Burp Suite)

目录

爬虫获取

需求

代码

从Burp Suite请求体中获取参数


爬虫获取

需求

url参数分三种情况

1. json格式

2. form格式

3. xml格式

已知入参情况有两种

1. Burp Suite 拷贝的请求头信息

2. 爬虫抓取的请求头信息

已知参数位置情况有两种

1. url路径中

2. post请求中的参数

最终返回结果

从入参中获取所有参数已 key :value 方式展示出

代码

get_params.py

#! /usr/bin/env python
# -*- coding: utf-8 -*-import jsondef get_params(url, data, json_b):params = {}if '?' in url and '=' in url:data = url.split('?')[1]if data[:1] == '?':data = data[1:]elif data:if json_b:params = dataelse:try:params = json.loads(data.replace('\'', '"'))return paramsexcept json.decoder.JSONDecodeError:passelse:return Noneif not params:parts = data.split('&')for part in parts:each = part.split('=')if len(each) < 2:each.append('')try:params[each[0]] = each[1]except IndexError:params = Nonereturn paramsif __name__ == "__main__":#url = "http://172.16.12.129:8080/aaaa.php?aaa=3&bbb=4"url = "http://172.16.12.129:8080/aaaa.php"data = 'handle=<link rel=attachment href="file:///etc/passwd">&insert=Generate+%3E%3AD%3C'#data = {"handle": "aaa", "insert": "bbb"}print(get_params(url, data, isinstance(data, dict)))

从Burp Suite请求体中获取参数

import re
import json
import urllib.parseclass Requester(object):protocol   = "http"host       = ""method     = ""action     = ""headers    = {}data       = {}params     = {}"""path: burp suite保存的请求头文件路径ssl: 判断http/httpsproxies: 代理"""def __init__(self, path, uagent, ssl, proxies):try:# 读取请求文件with open(path, 'r') as f:content = f.read().strip()except IOError as e:print("找不到文件")exit()try:content = content.split('\n')# 解析 method 和 操作 URIregex = re.compile('(.*) (.*) HTTP')self.method, self.action = regex.findall(content[0])[0]   # 请求方法、请求路径# 分析标头for header in content[1:]:name, _, value = header.partition(': ')if not name or not value:continueself.headers[name] = valueself.host = self.headers['Host']# 分析 user-agentif uagent != None:self.headers['User-Agent'] = uagent# 分析 data(区分json、form、xml格式)self.data_to_dict(content[-1])# 处理HTTPS请求if ssl == True:self.protocol   = "https"self.proxies = proxiesself.params = get_params(self.action, self.data, isinstance(self.data, dict))except Exception as e:print("错误的格式或原始数据 !")def data_to_dict(self, data):if self.method == "POST":# JSON 数据if self.headers['Content-Type'] and "application/json" in self.headers['Content-Type']:self.data = json.loads(data)# XML 数据elif self.headers['Content-Type'] and "application/xml" in self.headers['Content-Type']:self.data['__xml__'] = data# FORM 数据else:for arg in data.split("&"):regex = re.compile('(.*)=(.*)')for name,value in regex.findall(arg):name = urllib.parse.unquote(name)value = urllib.parse.unquote(value)self.data[name] = value

相关文章:

  • 【动态规划】LeetCode-10. 正则表达式匹配
  • Selenium教程04:鼠标+键盘网页的模拟操作
  • 旋转图像(LeetCode 48)
  • 计算机网络-VLAN原理与配置
  • 跟我学c++中级篇——再谈C++20中的协程
  • leetcode07-罗马数字的转换
  • 盛最多水的容器【双指针】
  • 数据结构OJ实验14-哈希查找
  • Redisson依赖冲突记录
  • STC进阶开发(三)蜂鸣器、RTC时钟、I2C总线、外部中断、RTC闹钟设置、RTC计时器设置
  • C语言——指针
  • 百度吉利合作造车生态,极越“智价比”能否带来科技平权?
  • 数据库管理-第127期 LSM Tree(202301225)
  • openFeign服务调用
  • 惊人技术!重新定义人机互动:深入了解神经链接的脑机接口技术
  • @jsonView过滤属性
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • angular2开源库收集
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • C# 免费离线人脸识别 2.0 Demo
  • C++类的相互关联
  • IDEA 插件开发入门教程
  • k个最大的数及变种小结
  • node 版本过低
  • nodejs:开发并发布一个nodejs包
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue自定义指令实现v-tap插件
  • zookeeper系列(七)实战分布式命名服务
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 欢迎参加第二届中国游戏开发者大会
  • 回顾2016
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 坑!为什么View.startAnimation不起作用?
  • 马上搞懂 GeoJSON
  • 排序(1):冒泡排序
  • 山寨一个 Promise
  • 突破自己的技术思维
  • 一个完整Java Web项目背后的密码
  • 硬币翻转问题,区间操作
  • 阿里云API、SDK和CLI应用实践方案
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (未解决)macOS matplotlib 中文是方框
  • (原)Matlab的svmtrain和svmclassify
  • (转)3D模板阴影原理
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)linux 命令大全
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ..回顾17,展望18
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net framework profiles /.net framework 配置
  • .Net MVC + EF搭建学生管理系统
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net 反编译_.net反编译的相关问题
  • .NET 反射 Reflect