如何从千余个带GET参数的链接中提取含XSS的JavaScript payload?
嘿,我懂你现在的需求——手里上千个带GET参数的URL,要把里面含XSS的JavaScript payload都揪出来整理成列表对吧?之前试了urlparse没找到直接对应的功能?其实urlparse只是拆分URL的第一步,咱们得结合它做后续的参数解析和筛选,下面给你具体的实现思路和代码示例:
解决方案:用Python解析并提取XSS Payload
我们可以借助Python的urllib.parse模块(Python3版本,Python2用urlparse)来拆分URL、解析查询参数,再针对性筛选含XSS特征的内容。
1. 核心思路拆解
- 先用
urlparse()拆分每个URL,分离出查询参数部分 - 再用
parse_qs()把查询参数转换成键值对字典,方便遍历每个参数的值 - 逐个检查参数值,提取包含“XSS”字符串(或其他XSS特征)的payload,最后整理成列表
2. 完整代码示例
from urllib.parse import urlparse, parse_qs def extract_xss_payloads(url_list): xss_payloads = [] for url in url_list: # 拆分URL的各个部分(协议、域名、路径、查询参数等) parsed_url = urlparse(url) # 把查询参数解析成字典,每个参数对应的值是列表(支持重复参数) query_params = parse_qs(parsed_url.query) # 遍历所有参数的所有值 for param_values in query_params.values(): for value in param_values: # 检查是否包含"XSS"字符串,可根据需求扩展更多XSS特征 if "XSS" in value: xss_payloads.append(value) # 可选:去重处理,避免重复的payload return list(set(xss_payloads)) # 测试用例 sample_urls = [ "http://example.com/test?input=<script>alert('XSS')</script>", "http://demo.site?payload=XSS-steal-session&foo=bar", "http://test.net?id=456&content=safe-text" ] # 提取结果 result = extract_xss_payloads(sample_urls) print("提取到的XSS Payload:") for idx, payload in enumerate(result, 1): print(f"{idx}. {payload}")
3. 扩展优化建议
- 精准筛选:如果你的XSS payload不一定带“XSS”字符串,而是有
<script>、javascript:、onclick=这类特征,可以把判断条件改成:xss_keywords = ["XSS", "<script>", "javascript:", "onload=", "onclick="] if any(keyword in value for keyword in xss_keywords): - 保留重复项:如果不需要去重,直接返回
xss_payloads即可,不用转成集合再转列表 - 批量处理:如果你的URL是存放在文本文件里,可以先读取文件内容到列表,再传入函数处理
内容的提问来源于stack exchange,提问作者fedsikan
相关产品推荐
相关产品推荐

