gpt4 book ai didi

php - CURLOPT_FOLLOWLOCATION 不工作

转载 作者:可可西里 更新时间:2023-11-01 16:31:12 25 4
gpt4 key购买 nike

我正在尝试通过此链接抓取数据: http://www.treasurydirect.gov/NP/BPDLogin?application=np

其中包含元刷新。

我正在使用 curl_exec 并将 CURLOPT_FOLLOWLOCATION 设置为 true。

在 phpinfo() 中,我确认未设置安全模式和 basedir。然而 CURLOPT_FOLLOWLOCATION 仍然没有工作。这是我的代码:

<?php 
error_reporting(E_ALL);

$url = 'http://www.treasurydirect.gov/NP/BPDLogin?application=np';

// READ THE WEB PAGE
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,20);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_COOKIEFILE,"cookies.txt");
curl_setopt($ch,CURLOPT_COOKIEJAR,"cookies.txt");
curl_error($ch);
$htm = curl_exec($ch);
curl_close($ch);

// MAKE OUR OUTPUT EASY TO READ
echo "<pre>";

// GET THE TITLE
$txt = strip_tags($htm, '<title>');
$rgx
= '#' // REGEX DELIMITER - START
. '\<title\>' // TITLE TAG WITH ANGLE BRACKETS ESCAPED - START
. '(.*?)' // GROUP OF ANYTHING
. '\</title\>' // TITLE TAG WITH ANGLE BRACKETS ESCAPED - END
. '#' // REGEX DELIMITER - END
. 'is' // CASE-INSENSITIVE, SINGLE LINE
;
preg_match($rgx, $txt, $arr);

// DISPLAY THE TITLE
echo
'<strong>'
. $arr[1]
. '</strong>'
. PHP_EOL
. PHP_EOL
;

// SHOW THE PAGE SOURCE
$src = htmlentities($htm);
echo $src;

?>

最佳答案

问题不在于元刷新标签(顺便说一下,CURLOPT_FOLLOWLOCATION 选项永远不会跟在后面),而是 HTTP 用户代理 header 。该网站根据已接受的用户代理列表检查 HTTP 用户代理 header 字段。您可以通过在为 $ch 设置选项时添加以下行来解决此问题:

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

关于php - CURLOPT_FOLLOWLOCATION 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6002272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com