如果网页包含特定文本,则制作 URL 列表

如果网页包含特定文本,则制作 URL 列表

我正在尝试根据网页是否包含文本“XYZ”来制作网页的 URL 列表。

URL 的形式如下:

https://www.website.tld/page.php?var1=???&var2=static

???是一个从 1 开始的数字,每次递增 1,直到遇到错误页面(例如包含文本“ERROR”的页面)

我想将正匹配的 URL 转储到输出文件中。我读到curl可以顺序扫描这样的URL,并且它的输出可以传递给grep。但是,我不确定在 grep 输出之后如何检索和保存 URL。

答案1

如果没有以下内容,生成 URL 可能会更容易curl

for ((i=1; i<1000; i++)); do
    url="https://www.website.tld/page.php?var1=${i}&var2=static" 
    if curl -s "$url" | grep -q XYZ; then
        echo "$url" >> positive-matches.txt
    fi
od

答案2

我已经制作了一个工作脚本。分享它以防有人觉得有帮助。 @nohillside 的回答对我有帮助。

#!/bin/bash

count=1

while true
do
    url="https://www.website.tld/page.php?var1=${count}&var2=static"

    text=`curl -s "$url"`

    if echo "$text" | grep -q "ERROR"
    then
        break
    elif echo "$text" | grep -q "XYZ"
    then
        echo "$url" >> matches.txt
    fi

    ((count++))

done

相关内容