【网络安全带你练爬虫-100练】第22练:数据包中参数提取与处理

目录

一、目标1:GET数据包的处理

1、GET数据包中参数的提取

[2、GET请求中 统计参数个数](#2、GET请求中 统计参数个数)

二、目标2:POST数据包的处理

1、post中参数个数的提取

[2、POST请求中 统计参数个数](#2、POST请求中 统计参数个数)


一、目标1:GET数据包的处理

1、GET数据包中参数的提取

python 复制代码
import re

def extract_get_parameters(request):
    # 查找GET请求中的参数部分
    match = re.search(r'GET\s+/.*\?(.*)\s+HTTP', request)
    if match:
        parameters = match.group(1)
        # 将参数部分按照 '&' 分割成键值对
        parameter_list = parameters.split('&')
        # 将键值对解析为字典形式
        parameters_dict = {}
        for parameter in parameter_list:
            key, value = parameter.split('=')
            parameters_dict[key] = value
        return parameters_dict

    return {}

# 示例请求
request = "GET /xxxx/xxxx HTTP/1.1\nHost: x.x.x.x.cn\n......{此处省略一万字}"

parameters = extract_get_parameters(request)
print(parameters)

2、GET请求中 统计参数个数

python 复制代码
import re

def count_get_parameters(request):
    # 查找GET请求中的参数部分
    match = re.search(r'GET\s+/.*\?(.*)\s+HTTP', request)
    if match:
        parameters = match.group(1)
        # 将参数部分按照 '&' 分割成键值对
        parameter_list = parameters.split('&')
        # 统计参数个数
        return len(parameter_list)

    return 0

# 示例请求
request = "GET /xxxx/xxxx HTTP/1.1\nHost: x.x.x.x.cn\n......{此处省略一万字}"

count = count_get_parameters(request)
print(count)


二、目标2:POST数据包的处理

1、post中参数个数的提取

python 复制代码
import re

def count_post_parameters(post_data):
    # 使用正则表达式提取JSON数据
    pattern = r"\{.*\}"
    match = re.search(pattern, post_data)
    if match:
        json_data = match.group()
        parsed_data = json.loads(json_data)
        parameter_count = len(parsed_data)
        return parameter_count
    else:
        return 0

# 示例用法
post_data = '''POST /xxxx/xxxx HTTP/1.1\nHost: x.x.x.x.cn\n......{此处省略一万字}'''

parameter_count = count_post_parameters(post_data)
print(parameter_count)  # 输出:4

2、POST请求中 统计参数个数

(与GET类似,就不再做叙述了)

相关推荐
kylezhao201925 分钟前
C#读取字节数组某个位的值
开发语言·c#
资生算法程序员_畅想家_剑魔39 分钟前
Java常见技术分享-26-事务安全-锁机制-作用与分类
java·开发语言·数据库
Keep_Trying_Go40 分钟前
基于无监督backbone无需训练的类别无关目标统计CountingDINO算法详解
人工智能·python·算法·多模态·目标统计
qq_406176141 小时前
JS 事件循环(Event Loop)
开发语言·前端·javascript
weixin_433179331 小时前
python - for循环,字符串,元组基础
开发语言·python
^哪来的&永远~1 小时前
Python 轻量级 UI:EEG 与 fNIRS 预处理图形界面
python·可视化·功能连接·eeg·mne·fnirs·eeglab
AI大佬的小弟1 小时前
Python基础(11):Python中函数参数的进阶模式详解
python·lambda函数·函数的参数解释·函数的参数进阶·位置参数·关键词参数·匿名函数与普通函数
智算菩萨2 小时前
Python可以做哪些小游戏——基于Python 3.13最新特性的游戏开发全指南(15万字超长文章,强烈建议收藏阅读)
python·pygame
智航GIS2 小时前
9.1 多线程入门
java·开发语言·python
qq19257230272 小时前
QT的QML
开发语言·qt