wget如何排除非指定子域 及仅对静态资源开启跨域抓取
wget配置问题解决方案
问题1:仅下载主域和指定子域内容的配置方法
wget自带的--domains参数为后缀匹配规则,填写example.com时会自动匹配所有*.example.com子域,无法实现精确的域名筛选,可通过正则匹配规则实现需求,可行命令如下:
wget --convert-links --adjust-extension --page-requisites \ --accept-regex '^https?://(example\.com|abc\.example\.com)/.*' \ https://example.com/
上述命令中的正则会严格校验请求URL的域名部分,仅允许主域example.com和指定子域abc.example.com的内容被下载,其余子域资源会被直接过滤。
问题2:让--span-host仅对静态资源生效的配置方法
可以通过后缀白名单+域名正则组合的方式实现该需求,可行命令如下:
wget --convert-links --adjust-extension --page-requisites \ --span-hosts \ --accept '*.js,*.css,*.png,*.jpg,*.jpeg,*.gif,*.svg,*.ico,*.webp,*.woff,*.woff2,*.ttf' \ --accept-regex '^https?://(example\.com|abc\.example\.com)/.*\.(html|htm|php|pdf)$' \ https://example.com/
规则逻辑说明:
--span-hosts开启跨域资源拉取权限--accept参数限定跨域仅能拉取指定后缀的静态资源文件- 正则规则限定普通文档类内容(html、pdf等)仅能从主域和指定子域拉取,不会跨域下载其他站点的文档内容
内容的提问来源于stack exchange,提问作者user16574526
相关产品推荐
相关产品推荐

