php – cURL从重定向获取url

php – cURL从重定向获取url

大家好,又见面了,我是全栈君。

我目前正在使用cURL尝试从网站刮刀的重定向获取URL.我只需要网站上的网址.我在过去几天研究过stackoverflow和其他网站,但都没有成功.我目前使用的代码来自这个网站:

  $url = "http://www.someredirect.com";
  $ch = curl_init($url);
  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');         
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  curl_setopt($ch, CURLOPT_NOBODY, true);
  $response = curl_exec($ch);
  preg_match_all('/^Location:(.*)$/mi', $response, $matches);
  curl_close($ch);
  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中,您的解决方案是:

 

<?php

$url = 'http://www.example.com/product/123/';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
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.
curl_exec($ch);

$response = curl_exec($ch);
preg_match_all('/^Location:(.*)$/mi', $response, $matches);
curl_close($ch);

echo !empty($matches[1]) ? trim($matches[1][0]) : 'No redirect found';

  

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112120.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python爬虫之BeautifulSoup

    Python爬虫之BeautifulSoup目录BeautifulSoup介绍BeautifulSoup安装使用简单使用标签选择器获取标签整个,包括内容和标签本身获取标签名字获取标签属性获取标签内容嵌套标签获取获取子节点列表形式获取迭代器形式获取获取所有子孙节点获取父节点获取祖先节点获取兄弟节点标准选择器通过标签名(name)查找通过属性(attrs)查找传入样式选择器查找通…

    2022年5月28日
    31
  • 最典型的因果图_因果关系分析图制作

    最典型的因果图_因果关系分析图制作文章目录1dowhy介绍1.1dowhy的分析流程2案例2.1数据获取与整理2.2如何简单证明变量之间的因果关系2.3步骤一:因果图建模2.4步骤二:识别2.5步骤三:估计因果效应2.6反驳结果2.7与普通ML分类模型比较特征重要性1dowhy介绍github地址:microsoft/dowhydowhy文档:DoWhy|Anend-to-endlibraryforcausalinference1.1dowhy的分析流程参考材料:因果推断框架DoWh

    2022年8月14日
    5
  • 深入理解FFM原理与实践

    深入理解FFM原理与实践FM 和 FFM 模型是最近几年提出的模型 凭借其在数据量比较大并且特征稀疏的情况下 仍然能够得到优秀的性能和效果的特性 屡次在各大公司举办的 CTR 预估比赛中获得不错的战绩 美团点评技术团队在搭建 DSP 的过程中 探索并使用了 FM 和 FFM 模型进行 CTR 和 CVR 预估 并且取得了不错的效果 本文旨在把我们对 FM 和 FFM 原理的探索和应用的经验介绍给有兴趣的读者 前言在计算广告领域 点击率 CTR click th

    2025年9月16日
    4
  • js函数的回调

    js函数的回调平常的前端开发工作中,编写js时会有很多地方用到函数的回调。最简单的例子就是:<scriptlanguage=”javascript”type=”text/javascript”>functiondoSomething(callback){if(typeofcallback==”function”){callback();}}function…

    2022年5月9日
    56
  • Tomcat全攻略

    Tomcat全攻略

    2021年12月15日
    56
  • 卸载Oracle11g的方法

    卸载Oracle11g的方法

    2021年7月9日
    82

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号