经常爬虫的朋友都知道,
有时候找接口参数变化
用肉眼对比很麻烦
所以写了一个实时高亮对比的工具
以下是源码
[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;
}
}
}
|