【网络安全带你练爬虫-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类似,就不再做叙述了)

相关推荐
databook3 小时前
使用 SciPy 库进行时间序列分析
python·数据分析·scipy
java资料站3 小时前
十一、评估测试
开发语言·人工智能·python
szial3 小时前
网络爬虫与 CDP 实战(二):浏览器能访问,Python 却被拒绝?拆开登录态与 CSRF
爬虫·python·csrf
左手の明天4 小时前
SLIP 协议封装与解析详解:原理、C 代码与实战案例
linux·c语言·开发语言·c++
海上小飞龙4 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
青少儿编程课堂4 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
朝朝辞暮i4 小时前
C++ 第 12 课:局部变量、作用域、变量生命周期
开发语言·c++·算法
狗凯之家源码网4 小时前
淘客口令落地页生成器 PHP 版深度评测
开发语言·php
画绛集美术4 小时前
本地化部署LLM用于美术史问答:一间美术教室的实践记录
开发语言·php
怕浪猫5 小时前
LLM 面试必问的 8 个问题,答不上来直接淘汰
人工智能·python·面试