我正在尝试创建一个将跟随网站的cURL脚本,即使发生重定向也是如此。 由于某种原因,我的方法似乎适用于大多数站点,但无法进行重定向。

我已经尝试解决此问题已有相当长的时间了,对于任何为何无法正常工作的建议,我深表感谢。

我的目标是使脚本遵循重定向并从重定向URL http://www.chinooksailing.com/products/获取内容。

提前致谢!

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.chinooksailing.com/');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$content = curl_exec($ch);

curl_close($ch);
return $content;

===============>>#1 票数:0

CuRL不重定向的原因是因为您请求的站点使用的是Javascript重定向,而不是常规的30x HTTP方法。 因为curl无法解析页面,所以它不知道它正在重定向。

这是网站重定向到产品之前的源代码。 如您所见,它调用了一个函数来加载产品页面并离开当前页面。

<body background="img/bg.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="MM_goToURL('parent','http://www.chinooksailing.com/products/');return document.MM_returnValue">

如果您好奇我是怎么想的。 我先加载了Chrome开发者工具,然后导航到原始URL。 在查看HTTP请求时,我注意到加载的产品页面的HTTP状态为200,而上一页未显示30x状态,就像通常显示的是HTTP重定向一样。

然后,我使用view-source://的URI方案导航到主页,以检查原始/主页的源代码。 在那里,您可以轻松地看到它正在使用javascript重定向。

===============>>#2 票数:0

从cURL的官方常见问题解答中:

4.14重定向在浏览器中有效,但不能使用curl!

curl支持HTTP重定向正常(请参阅第3.8条)。 浏览器通常支持至少两种其他方式来执行curl不支持的重定向:

元标记。 您可以编写一个HTML标签,该标签将导致浏览器在一定时间后重定向到另一个给定的URL。

Javascript。 您可以编写嵌入在HTML页面中的Javascript程序,以将浏览器重定向到另一个给定的URL。

无法使curl遵循这些重定向。 您必须手动找出要设置的页面,或者编写一个脚本来解析结果并获取新的URL。

请参阅: http : //curl.haxx.se/docs/faq.html#Redirects_work_in_browser_but_no

您尝试重定向的网站正在使用javascript重定向。

请问您为什么不直接写http://www.chinooksailing.com/products/

  ask by AnchovyLegend translate from so

未解决问题?本站智能推荐:

1回复

使用CURL从重定向的URL抓取网页

我有一个网址http://www.example.com/all.php?f=1 。 当我打开网址时,它将重定向到值为f(其中f = 1)的http://www.example.com/all.php 。 我尝试使用curl抓取重定向的URL,但仍然失败。 我尝试在此网站中搜索任何内容,但
1回复

使用CURL并避免被重定向到基本URL

我正在尝试获取带有CURL的页面的源代码 http://www.deindeal.ch/zurich/?a_aid=dealanzeiger&a_bid=62e0def7 但是我唯一得到的是索引站点(http://www.deindeal.ch),因为它会自动重定向。 我想
2回复

使用cURL之后的错误重定向URL

我从邮递员那里复制了php代码,当从我的网站执行此代码时,出现错误,我从cURL返回的重定向URL包含转义字符。 如何告诉cURL保持重定向字符串不变? 我得到的消息是:cURL错误:错误的URL {“ redirect”:“ http:\\ / \\ / ...(<-添加了要显示
2回复

cURL从重定向获取URL

我目前正在使用cURL尝试从网站刮刀的重定向获取URL。 我只需要网站上的网址。 我在过去几天研究过stackoverflow和其他网站,但都没有成功。 我目前使用的代码来自这个网站: 任何帮助将不胜感激!
1回复

使用HTTP标头和卷曲查找URL重定向?

我正在尝试编写重定向检查程序,以检查URL是否对搜索引擎友好。 它必须检查URL是否被重定向,如果它被重定向,它必须告诉它是否是SEO友好(301状态代码)或不(302/304)。 这是我发现的类似内容: http : //www.webconfs.com/redirect-check.
1回复

使用PHP / cURL检查重定向URL的http响应代码

我正在编写一个脚本,该脚本使用curl检查域名数组并返回其http代码。 当代码为301或302时,它将在重定向后返回解析URL。 我希望它随后检查最终URL并返回其http代码。 有人可以建议我该怎么做吗?
2回复

如何使用curl获取php中的最新重定向URL

我正在使用php和curl来获取重定向网址,我已经得到了输出,但是它向我显示了在上一次重定向中未找到错误302(我必须将网址重定向两次),这是我的php代码, $ dds在example.com通过之后给了我下一个重定向,然后我再次使用了重定向功能,并且出现错误, 如何仅获取ht
1回复

CURL和重定向

CURL和重定向 你好 我正在使用CURL检查某些站点。 我在进行某些重定向时遇到问题。 并非每次都这样,只有少数情况。 在这种情况下,我有302代码,但是重定向URL与原始URL相同。 CURL变量的转储: 卷曲页面: 谢谢
3回复

在curl php中获取最后一个重定向的url

嗨,我知道它是StackOverFlow上一个非常常见的主题。 我已经花了整整一周的时间来搜索它。 我有一个网址:abc.com/default.asp?strSearch = 19875379 这进一步重定向到此网址:abc.com/default.asp?catid={170D
1回复

cURL拒绝显示302重定向URL

这是我的代码: 这就是我的收获(来自read_header()函数): 如果我print_r()curl_getinfo()我得到这个: 但是,如果您使用chrome(或其他格式)访问该URL,则会看到该URL为您提供了302重定向到http://www.alssport