You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过程序化方式(优先Bash)检测加载到网页的外部资源?

嘿,这个需求我太熟了!要程序化检查网站是否加载了jQuery、Imgur这类资源,分两种场景来处理就行——静态引用的资源和JS动态加载的资源,优先用Bash的话,给你整理几个实用的方案:

一、检查静态引用的资源(HTML源码直接声明的)

这种情况用curl+grep就能搞定,因为资源链接直接写在初始HTML里,不需要执行JS。

1. 检查jQuery

用正则匹配常见的jQuery文件名(比如jquery.min.js):

# 直接查看匹配结果
curl -s https://你的目标网站.com | grep -E 'jquery\.min\.js|jquery\.js'

# 脚本里判断是否存在(静默模式,只返回状态)
if curl -s https://你的目标网站.com | grep -q 'jquery\.min\.js'; then
    echo "✅ 检测到静态引用的jQuery"
else
    echo "❌ 未检测到静态引用的jQuery"
fi

-s是静默模式(不显示下载进度),-q让grep只返回退出码(0表示匹配到,1表示没匹配到),适合脚本逻辑判断。

2. 检查Imgur图片

匹配Imgur图片的典型URL格式(i.imgur.com开头的图片链接):

curl -s https://你的目标网站.com | grep -E 'https?://i\.imgur\.com/[a-zA-Z0-9]+\.(png|jpg|jpeg|gif)'
二、检查动态加载的资源(JS异步引入的)

如果资源是浏览器执行JS后才加载的(比如懒加载的图片、异步加载的脚本),curl就抓不到了——这时候需要用无头浏览器模拟真实浏览器的加载过程,Chrome/Chromium或Firefox都支持无头模式。

方法1:Chrome/Chromium无头模式 + HAR文件解析

Chrome可以生成HAR(HTTP Archive)文件,里面包含所有加载的资源请求,再用jq(JSON解析工具,需要提前安装)提取URL进行匹配。

步骤:

  1. 生成HAR文件(包含所有资源请求):
chromium --headless --disable-gpu --har=output.har --no-sandbox https://你的目标网站.com

--har=output.har指定把请求日志保存为HAR文件,--no-sandbox是Linux下的必要参数(避免权限问题)。

  1. 解析HAR文件,检查目标资源:
# 检查是否加载了jQuery(只看成功返回的请求,状态码200)
jq '.log.entries[] | select(.response.status == 200) | .request.url' output.har | grep -E 'jquery\.min\.js'

# 检查是否加载了Imgur图片
jq '.log.entries[] | select(.response.status == 200) | .request.url' output.har | grep -E 'i\.imgur\.com'
  1. 一键式脚本判断:
# 直接输出结果,不用保存HAR文件
chromium --headless --disable-gpu --har=- --no-sandbox https://你的目标网站.com 2>/dev/null | \
jq '.log.entries[] | .request.url' | \
grep -q 'jquery\.min\.js' && echo "✅ 检测到jQuery(静态/动态加载)" || echo "❌ 未检测到jQuery"

--har=-把HAR内容输出到标准输出,2>/dev/null忽略无头浏览器的无关报错。

方法2:Firefox无头模式(类似Chrome)

如果你习惯用Firefox,命令格式差不多:

# 生成HAR文件
firefox --headless --screenshot /dev/null --har output.har https://你的目标网站.com

# 解析检查资源
jq '.log.entries[] | .request.url' output.har | grep -E 'i\.imgur\.com'

备选:wget蜘蛛模式(局限性大)

如果不想装无头浏览器,可以用wget的蜘蛛模式模拟爬取,但它不执行JS,只能抓到静态资源和HTML里声明的链接,动态加载的还是抓不到:

wget --spider --recursive --level=1 --no-parent https://你的目标网站.com 2>&1 | grep -E 'jquery|imgur'

--spider是只检查链接不下载,--level=1限制只爬一级页面的资源。

三、进阶封装:写成可复用的Bash函数

把检查逻辑封装成函数,方便日常调用:

check_loaded_resource() {
    local target_url=$1
    local resource_pattern=$2

    # 用Chrome无头模式获取所有请求URL,过滤匹配项
    chromium --headless --disable-gpu --har=- --no-sandbox "$target_url" 2>/dev/null | \
    jq -r '.log.entries[] | .request.url' | \
    grep -E "$resource_pattern" | uniq

    # 判断是否匹配到
    if [ $? -eq 0 ]; then
        echo -e "\n✅ 检测到匹配资源:$resource_pattern"
    else
        echo -e "\n❌ 未检测到匹配资源:$resource_pattern"
    fi
}

# 使用示例
check_loaded_resource "https://你的目标网站.com" "jquery\.min\.js"
check_loaded_resource "https://你的目标网站.com" "i\.imgur\.com/[a-zA-Z0-9]+\.(png|jpg)"

uniq用来去重重复的资源URL,-r让jq输出纯文本URL(不带引号)。


内容的提问来源于stack exchange,提问作者VPL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:27:01