php – cURL从重定向获取url

举报
lxw1844912514 发表于 2022/03/27 00:10:30 2022/03/27
【摘要】 我目前正在使用cURL尝试从网站刮刀的重定向获取URL.我只需要网站上的网址.我在过去几天研究过stackoverflow和其他网站,但都没有成功.我目前使用的代码来自这个网站: $url = "http://www.someredirect.com"; $ch = curl_init($url); ...
我目前正在使用cURL尝试从网站刮刀的重定向获取URL.我只需要网站上的网址.我在过去几天研究过stackoverflow和其他网站,但都没有成功.我目前使用的代码来自这个网站:

     
  1. $url = "http://www.someredirect.com";
  2. $ch = curl_init($url);
  3. curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5. curl_setopt($ch, CURLOPT_HEADER, true);
  6. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  7. curl_setopt($ch, CURLOPT_NOBODY, true);
  8. $response = curl_exec($ch);
  9. preg_match_all('/^Location:(.*)$/mi', $response, $matches);
  10. curl_close($ch);
  11. echo !empty($matches[1]) ? trim($matches[1][0]) : 'No redirect found';

任何帮助将不胜感激!

最佳答案
在您的特定情况下,服务器正在检查某些用户代理字符串.

 

当服务器检查用户代理字符串时,只有当服务器看到“有效”(根据服务器)用户代理时,它才会响应302重定向状态代码.任何“无效”用户代理都不会收到302重定向状态代码响应或Location:标头.

在您的特定情况下,当服务器收到来自“无效”用户代理的请求时,它会响应200 OK状态代码,而响应正文中没有文本.

(注意:在下面的代码中,提供的实际URL已被示例替换.)

假设http://www.example.com的服务器检查用户代理字符串,并且http://www.example.com/product/123/重定向到http://www.example.org/abc.

在PHP中,您的解决方案是:

 


     
  1. <?php
  2. $url = 'http://www.example.com/product/123/';
  3. $ch = curl_init($url);
  4. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  6. curl_setopt($ch, CURLOPT_HEADER, true);
  7. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0"); // Necessary. The server checks for a valid User-Agent.
  8. curl_exec($ch);
  9. $response = curl_exec($ch);
  10. preg_match_all('/^Location:(.*)$/mi', $response, $matches);
  11. curl_close($ch);
  12. echo !empty($matches[1]) ? trim($matches[1][0]) : 'No redirect found';

  

并且,此脚本的输出将是:http://www.example.org/abc.

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100027984

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。