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.

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Word修改默认字体

    Word修改默认字体在Win10的最近一次更新后,发现我的office365默认字体都给我改成等线,什么鬼,以前都是宋体,现在这个还真的不习惯,就动手修改默认字体,设置如下: 1、在word空白处点击鼠标右键,选择字体。 2、在弹出框设置样式(字体、大小等),设置完成之后点击设置默认值3、选择如下,点击确定即可。后面再创建word就默认是设置的字体以及大小。…

  • MVC框架理解及优缺点

    MVC框架理解及优缺点

  • windws7下Loadrunner12的使用教程详解「建议收藏」

    windws7下Loadrunner12的使用教程详解「建议收藏」一.初识LoadRunner( 点击链接跳转到LoadRunner的安装步骤)1.简介:(1)从LoadRunner英语字面上进行理解就是负载跑步者,为什么这么说呢?对于从事IT软件行业的工作者如开发人员和测试人员来说一定不会感到陌生就是在承受负载的条件下运行软件或者网页的业务。从另一个比较形象的理解就是“压死骆驼的最后一根稻草”这里的稻草就是软件的事务,LoadRunner这款软件…

    2022年10月14日
  • pytest报错_pytest失败重跑

    pytest报错_pytest失败重跑前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

  • allow_url_fopen 和 allow_url_include[通俗易懂]

    allow_url_fopen 和 allow_url_include[通俗易懂]一、在本地php.ini文件中将allow_url_fopen设置为On,重启Apache后,file_get_contents()就能读远程文件。1.读取本地php文件,当文本来解析,并没有执行读

  • matlab如何读取路径下所有图片_matlab保存到指定文件夹

    matlab如何读取路径下所有图片_matlab保存到指定文件夹之前的matlab学习中接触了各种图片的处理方式和算法函数,现在考虑的是如何保存和输出图片matlab中的图片保存方式imwrite函数imwrite函数是和imread函数配套的图片读取输出函数,写法和imread函数一样imwrite(I,‘lena.jpg’)需要注意的是在保存之前需要保存一个句柄I=getimage(gcf)但是问题在于imwrite函数保存的图片是已经定义过的图片在以下代…

发表回复

您的电子邮箱地址不会被公开。

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