找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 文档 工具 设计
查看: 38|回复: 0

分享一个URL参数对比的fiddler脚本源码

[复制链接]

1万

主题

1178

回帖

2万

积分

超级版主

教育辅助界扛把子

附加身份标识
精华
1
热心
5
听众
1
威望
53
贡献
13672
违规
0
书币
4343
注册时间
2020-4-8

论坛元老灌水之王

发表于 2024-8-23 00:11 | 显示全部楼层 |阅读模式
经常爬虫的朋友都知道,
有时候找接口参数变化
用肉眼对比很麻烦
所以写了一个实时高亮对比的工具

以下是源码


[AppleScript] 纯文本查看 复制代码
// 在 FiddlerScript 的自定义脚本中使用的代码
public static class URLComparer
{
    // 用于存储上一个请求的 URL
    private static string lastUrl = string.Empty;

    // 比较两个 URL 并高亮显示差异
    private static string HighlightDifferences(string url1, string url2)
    {
        var highlightedUrl1 = new System.Text.StringBuilder();
        var highlightedUrl2 = new System.Text.StringBuilder();

        // 使用 SequenceMatcher 进行差异比较
        var diff = new System.Collections.Generic.List<string>();

        for (int i = 0; i < url1.Length || i < url2.Length; i++)
        {
            if (i >= url1.Length)
            {
                highlightedUrl2.Append($"<span style='color:red;'>{url2[i]}</span>");
            }
            else if (i >= url2.Length)
            {
                highlightedUrl1.Append($"<span style='color:red;'>{url1[i]}</span>");
            }
            else if (url1[i] != url2[i])
            {
                highlightedUrl1.Append($"<span style='color:red;'>{url1[i]}</span>");
                highlightedUrl2.Append($"<span style='color:red;'>{url2[i]}</span>");
            }
            else
            {
                highlightedUrl1.Append(url1[i]);
                highlightedUrl2.Append(url2[i]);
            }
        }

        return $"<div>URL1: {highlightedUrl1.ToString()}</div><div>URL2: {highlightedUrl2.ToString()}</div>";
    }

    // 处理请求的逻辑
    public static void OnBeforeRequest(Session oSession)
    {
        if (oSession.uriContains("feeds?"))
        {
            // 提取 URL 查询参数
            var currentUrl = oSession.fullUrl;
            var queryParams = new System.Collections.Generic.Dictionary<string, string>();

            var uri = new System.Uri(currentUrl);
            var query = System.Web.HttpUtility.ParseQueryString(uri.Query);

            foreach (string key in query.Keys)
            {
                queryParams[key] = query[key];
            }

            // 格式化查询参数并构建新 URL
            var newQueryString = System.Web.HttpUtility.ParseQueryString(string.Empty);
            foreach (var pair in queryParams)
            {
                newQueryString[pair.Key] = pair.Value;
            }
            var newUrl = uri.GetLeftPart(System.UriPartial.Path) + "?" + newQueryString.ToString();

            // 比较并高亮显示差异
            if (!string.IsNullOrEmpty(lastUrl))
            {
                string result = HighlightDifferences(lastUrl, newUrl);
                // 输出到 Fiddler 的日志中
                FiddlerApplication.Log.LogString(result);
            }

            // 更新 lastUrl
            lastUrl = newUrl;
        }
    }
}



Great works are not done by strength, but by persistence! 历尽艰辛的飞升者,成了围剿孙悟空的十万天兵之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@cdsy.xyz

QQ|Archiver|手机版|小黑屋|城东书院 ( 湘ICP备19021508号-1|湘公网安备 43102202000103号 )

GMT+8, 2024-9-21 11:27 , Processed in 0.035559 second(s), 27 queries .

Powered by Discuz! CDSY.XYZ

Copyright © 2019-2023, Tencent Cloud.

快速回复 返回顶部 返回列表