在 Curl 输出中保存请求 url

在 Curl 输出中保存请求 url

下面的命令会生成一个充满 url 的文件并将其输入到 gnu parallel 中。我希望curlresponse.txt 中的输出也具有原始请求url。如何做呢?

cat urls.txt  | parallel -j 5  curl -IL -k {} > curlresponse.txt

所以最终输出的示例(在所有重定向之后)如下所示:

OriginalUrl
HTTP/1.1 200
Server: nginx
Date: Mon, 18 Mar 2019 07:35:11 GMT
Content-Type: text/html
Content-Length: 188
Connection: keep-alive

有时 url 可能会被重定向,因此最终的 http 响应应该是具有原始请求 url 的响应。

答案1

严格来说:

cat urls.txt  |
  parallel -j 5 echo {}';'curl -IL -k {} '|' perl -ne '/^HTTP.* 200/ .. 0 and print' > curlresponse.txt

但对于这样的情况,我通常更喜欢--tag在每一行前面添加输入:

cat urls.txt  |
  parallel -j 5 --tag curl -IL -k {} '|' perl -ne '/^HTTP.* 200/ .. 0 and print' > curlresponse.txt

它通常使进一步的处理变得更容易。

相关内容