读取列表并将它们添加到不同域的 curl
Read a list and add them to curl with different domains
我有一个 URL 列表,我想按顺序测试其中的一些 header。例如,我有以下 headers:
X-Forwarded-For:
X-Forwarded-Host:
还有以下网址:
https://example.com/
https://target.com/
https://redacted.com/
我想将第一个 header X-Forwarded-For:
添加到 curl 并 运行 按顺序覆盖所有 URL,然后添加第二个 header X-Forwarded-Host:
卷曲和 运行 卷曲 URL 等等。
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-Host: myserver.com"
我写了下面的代码:
function myfunc {
if [[ -f "allurls.txt" ]]; then
headers_list=("X-Forwarded-For: "
"X-Forwarded-Host: "
)
for headers in $(cat "allurls.txt"); do
for curlme in ${headers_list[@]}; do
(
curl --silent -I --max-time 10 --url "$headers" -H "$curlme myserver.com"
)
done
done
fi
}
myfunc
我的代码的问题是它像这样执行 curl:
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-Host: myserver.com"
交换 for
循环,使内循环成为外循环,反之亦然
...
# swap these 2 lines
for curlme in ${headers_list[@]}; do
for headers in $(cat "allurls.txt"); do
...
PS:我相信变量名称混合了,这可能更具可读性和您所期望的
...
# swap these 2 lines
for header in ${headers_list[@]}; do
for curlme in $(cat "allurls.txt"); do
curl --silent -I --max-time 10 --url "$curlme" -H "$header myserver.com"
...
添加一个更自然的 *nix 脚本
又称亲动
...
# it's common to use while-read loops with files
while read curlme; do
curl --silent -I --max-time 10 --url "$curlme" -H "$header myserver.com"
done < allurls.txt
...
我有一个 URL 列表,我想按顺序测试其中的一些 header。例如,我有以下 headers:
X-Forwarded-For:
X-Forwarded-Host:
还有以下网址:
https://example.com/
https://target.com/
https://redacted.com/
我想将第一个 header X-Forwarded-For:
添加到 curl 并 运行 按顺序覆盖所有 URL,然后添加第二个 header X-Forwarded-Host:
卷曲和 运行 卷曲 URL 等等。
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-Host: myserver.com"
我写了下面的代码:
function myfunc {
if [[ -f "allurls.txt" ]]; then
headers_list=("X-Forwarded-For: "
"X-Forwarded-Host: "
)
for headers in $(cat "allurls.txt"); do
for curlme in ${headers_list[@]}; do
(
curl --silent -I --max-time 10 --url "$headers" -H "$curlme myserver.com"
)
done
done
fi
}
myfunc
我的代码的问题是它像这样执行 curl:
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://example.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://target.com/ -H "X-Forwarded-Host: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-For: myserver.com"
curl --silent -I --max-time 10 --url https://redacted.com/ -H "X-Forwarded-Host: myserver.com"
交换 for
循环,使内循环成为外循环,反之亦然
...
# swap these 2 lines
for curlme in ${headers_list[@]}; do
for headers in $(cat "allurls.txt"); do
...
PS:我相信变量名称混合了,这可能更具可读性和您所期望的
...
# swap these 2 lines
for header in ${headers_list[@]}; do
for curlme in $(cat "allurls.txt"); do
curl --silent -I --max-time 10 --url "$curlme" -H "$header myserver.com"
...
添加一个更自然的 *nix 脚本
又称亲动
...
# it's common to use while-read loops with files
while read curlme; do
curl --silent -I --max-time 10 --url "$curlme" -H "$header myserver.com"
done < allurls.txt
...