无头铬浏览器命令语法问题

无头铬浏览器命令语法问题

我遇到一些问题,无头铬浏览器无法正确创建 html 文件。创建的唯一内容/文件是一个{}.html文件

我的domains.txt包含:

https://ibm.com/ 
https://www.linux.org/whats-new/

PS:我使用的是Ubuntu 18.04 64位linux

我使用的命令如下:

cat domains.txt | xargs -I {} -P 4 sh -c timeout 25s chromium-browser --headless --no-sandbox --user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537. 36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' --dump-dom https://{} 2> /dev/null > {}.html

这是取自这个链接

答案1

代码:

cat domains.txt | xargs -I {} -P 4 sh -c timeout 25s chromium-browser --headless --no-sandbox --user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537. 36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' --dump-dom https://{} 2> /dev/null > {}.html

这缺少围绕参数的引号sh -c。通过正确引用,它还会将代码注入到sh -c来自 的脚本中xargs,这是一个安全漏洞。

管道写得更好

xargs -I {} -P 4 sh -c '
    timeout 25s chromium-browser \
        --headless --no-sandbox \
        --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537. 36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36" \
        --dump-dom \
        "https://$1" 2>/dev/null >"$1.html"' sh {} <domains.txt

...但请注意,这仍然会写入名为“东西”的文件,例如https://ibm.com/.html如果文件中有这些字符串domains.txt(即奇怪命名的子目录中的文件),并且它会尝试获取诸如https://https://ibm.com/.

我认为目的是在文件中只保留实际的域,而不是完整的 URL domains.txt,即

ibm.com
www.linux.org

就我个人而言,我宁愿使用更简单的解决方案curl

相关内容