如何使用 cURL 查找 URL 将重定向到的位置?
一般而言,cURL 代表'Client for URLs',这里的URL 大写表示cURL 处理URL。
PHP方法:
cURL 中使用的基本函数:
- curl_init()函数:它将启动 curl 一个新会话并返回一个 cURL 句柄。
句法:curl_init();
- curl_setopt()函数:它为由 ch 参数标识的 cURL 会话设置一个选项。 Option 指定要设置的选项,value 指定给定选项的值。
句法:curl_setopt($ch, option, value);
与其他重要命令的参数:
- curl_setopt($ch, CURLOPT_URL, $url)它将 URL 作为参数传递,这将返回您想要从 Internet 获取的目标 url。
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE)设置为TRUE 将传输作为curl_exec() 的返回值的字符串返回,而不是直接输出。
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE)设置为 TRUE 以跟随服务器作为 HTTP 标头一部分发送的任何“Location:”标头。
- curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)用于获取有效 URL 的 cURL 信息。
- curl_exec($ch)它抓取 URL 并将其传递给变量以显示输出。
- curl_close($ch)关闭 curl 资源,释放系统资源。
程序:
";
echo "Redirected URL: " . $redirectedUrl . "
";
?>
输出:
Original URL: https://geeksforgeeks.org/
Redirected URL: https://www.geeksforgeeks.org/
命令行方法:
- 使用 cURL 获取重定向 URL:
句法:curl -Ls -w %{url_effective} -o /dev/null [URL]
描述:
- curl — 命令名称
- -s — 静默模式
- -L - 跟随重定向的位置
- -D -- -- 在这里转储头文件
- [URL] — 执行重定向的 URL
- -o /dev/null — 删除额外的标准输出信息
- -w '%{url_effective}' — 最终目的地
示例 1:
curl -Ls -w %{url_effective} -o /dev/null https://www.geeksforgeeks.org/php-cucrl/
输出:
- 使用 cURL 跟踪重定向:
句法:
curl -s -L -D - [URL] -o /dev/null -w '%{url_effective}'
示例 2:以下重定向到 404 错误页面。
curl -s -L -D - https://www.geeksforgeeks.org/php-cucrl/ -o /dev/null -w '%{url_effective}'
输出:
D:\mycurl\bin>curl -s -L -D - https://www.geeksforgeeks.org/php-cucrl/ -o /dev/null -w '%{url_effective}' HTTP/2 404 server: Apache strict-transport-security: max-age=3600; includeSubDomains link: ; rel="https://api.w.org/" access-control-allow-credentials: true x-frame-options: DENY x-content-type-options: nosniff content-type: text/html; charset=UTF-8 cache-control: must-revalidate, max-age=3, s-maxage=21600 date: Mon, 08 Jul 2019 01:34:28 GMT 'https://www.geeksforgeeks.org/php-cucrl/'
- 跟随重定向到正确的页面:
示例 3:curl -s -L -D - https://www.geeksforgeeks.org/php-curl/ -o /dev/null -w '%{url_effective}'
输出:
D:\mycurl\bin>curl -s -L -D - https://www.geeksforgeeks.org/php-curl/ -o /dev/null -w '%{url_effective}' HTTP/2 200 server: Apache strict-transport-security: max-age=3600; includeSubDomains access-control-allow-credentials: true x-frame-options: DENY x-content-type-options: nosniff content-type: text/html; charset=UTF-8 cache-control: must-revalidate, max-age=3, s-maxage=21600 date: Mon, 08 Jul 2019 01:34:55 GMT 'https://www.geeksforgeeks.org/php-curl/'