如何让 curl 重新使用现有连接

如何让 curl 重新使用现有连接
curl --verbose google.com

如果我执行此命令,在 curl 完成其工作后,它会显示“与主机 google.com 的连接 #0 保持完好”。

但如果我紧接着执行相同的命令,它不会使用相同的连接。如何让 curl 在第二个命令中重新使用相同的连接?

笔记:我不想在下面使用该命令,因为我必须在两个请求之间执行一些 bash 脚本操作:

curl --verbose google.com --next google.com

答案1

在谷歌上搜索时,我发现了一些有趣的答案和文章,这些答案和文章都与你的问题有关。主要是第二个答案https://stackoverflow.com/a/18047230/2901077不仅可以帮助您了解如何使用 libcurl 的端口重用,还可以帮助您了解何时使用它。

使用cURL_init用 PHP 实现的函数,用于打开连接,并且链接包括对其他两个函数(curl_setopt 和 curl_exec)的引用,以便能够潜在地重用现有句柄(连接)。

顺便提一下这个答案,https://stackoverflow.com/a/982556/2901077告诉您 cURL 如何处理新的或现有的请求。https://stackoverflow.com/a/15047105/2901077回答一下。

答案2

那么如何在第一个请求中保存 cookie,然后在第二个请求中重新使用它们呢?

这解决了我的问题。你可以使用

  • --dump-header mysession_cookies--cookie-jar保存 cookies。第二种方法会将加载的 cookies(如果有)与收到的 cookies 进行合并。

  • --cookie mysession_cookies在下次请求时加载 cookies

请参阅此处了解更多详细信息讨论。因此,您使用的不是相同的 TCP 会话,但从 HTTP 的角度来看,它看起来像这样。

如果你想重用同一个会话 TCP 套接字来发送数据包,你需要一个特定的软件,如哈普罗西它充当混合器。也就是说,它接受你的请求并与服务器保持打开的连接。请参阅此讨论更多细节。

相关内容