[ネットワーク セキュリティで爬虫類の練習をする - 100 の演習] 演習 22: データ パケット内のパラメータの抽出と処理

目次

1. 目標 1: GET パケットの処理

1. GETパケット内のパラメータの抽出

2. GETリクエスト内の統計パラメータの数

2. 目標 2: POST パケットの処理

1.ポスト内のパラメータ数の抽出

2. POSTリクエスト内のパラメータの数を数える


1. 目標 1: GET パケットの処理

1. GETパケット内のパラメータの抽出

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リクエスト内の統計パラメータの数

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. 目標 2: POST パケットの処理

1.ポスト内のパラメータ数の抽出

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 と同様ですが、これ以上の説明はありません)

おすすめ

転載: blog.csdn.net/qq_53079406/article/details/132232192