获取 cURL 以跟踪重定向

2023-12-26

我在 Laravel 中有一个应用程序,可以抓取网站并检索特定信息。 最近我看到越来越多的网站出现 403 禁止访问,所以我决定第一次尝试 cURL。

我现在遇到的唯一问题是,对于具有 301 或 302 重定向的网站,cURL 不遵循它们。

这就是我所拥有的:

$curl = curl_init(); 
        curl_setopt($curl, CURLOPT_URL, $results['url_search']);  
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);  
        curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

        $str = curl_exec($curl);  

        $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
        $header = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        $body = substr($str, $header_size);

        curl_close($curl); 

正如我所说,在有重定向的页面上,我会陷入困境。有什么建议么? 我见过一些东西,但没有一个起作用。


curl有一个选项可以实现您正在寻找的目标, 以下重定向:

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

只需在执行之前将此行添加到您的curl-options 中即可。

正如您所期望的,这将遵循任何 301 / 302 重定向并最终到达一个网站,该网站不会进一步重定向您的请求。

另外,请记住(如果没有解决方法)这可能会导致无限循环。 (站点 a 重定向到 b,b 重定向到 a)。

也就是说,您也应该使用此选项:

curl_setopt($curl, CURLOPT_MAXREDIRS, 10);

这样,您的请求将在 10 次重定向后结束,并且您不必担心脚本在无限循环中运行。

相关网站是您进一步使用不同选项进行工作的一个很好的来源php.net http://php.net/manual/en/function.curl-setopt.php

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 cURL 以跟踪重定向 的相关文章

随机推荐

  • 如何使用Java在接口中只实现所需的方法

    我有一个包含三个方法的接口 并且我已经在我的子类中实现了这两个方法 在此期间 我遇到了编译时错误 我该如何处理这种情况 片段一 package com college problems public interface MethodDefi
  • Python超类反射

    如果我有Python代码 class A pass class B pass class C A B pass 我有课C 有没有办法迭代它的超级类 A and B 像伪代码一样 gt gt gt magicGetSuperClasses C
  • 如何从子窗口关闭 fancybox?

    父链接 a href feedback php Provide your feedback here a 启动 fancybox 的 jQuery 代码是 feed fancybox Feedback php 中的代码
  • 如何将 String 对象(包含 XML)“转换”为现有 JSP 页面上的元素

    目前 我有一个包含 XML 元素的 String 对象 String carsInGarage garage getCars 我现在想将此字符串作为输入 流源 或某种源 传递 但不确定选择哪个以及如何实现它 我看过的大多数解决方案都导入包
  • SQL Server 多行计算

    如果我有以下格式的数据 Account Period Values Revenue 2013 01 01 5432 Revenue 2013 02 01 6471 Revenue 2013 03 01 7231 Costs 2013 01
  • Android ListFragment更新/刷新和onItemClick

    我的 Android 项目遇到问题 它是一个音乐曲目播放器 显示 ListFragment 中的每个曲目 每个项目都有一个位图 其中示波器绘制在位图画布上 Listfragment 中的项目会定期刷新 这是通过以下方式完成的 通知数据集更改
  • git浅克隆到特定标签

    我想克隆 Linux 内核存储库 但只能从 3 0 版本开始 因为内核存储库太大了 如果我可以进行浅克隆 它会使我的版本控制工具运行得更快 我的问题的核心是 我如何告诉 git depth 参数的 n 值是什么 我希望这会起作用 克隆htt
  • 如何使用Python从最高到最低设置k-Means聚类标签?

    我有一个包含 38 个公寓的数据集以及它们早上 下午和晚上的用电量 我尝试使用 scikit learn 的 k Means 实现对该数据集进行聚类 并得到了一些有趣的结果 First clustering results 这一切都很好 对
  • 显示在合并中丢失的观察结果

    假设我想通过两列的键合并两个不同的数据帧 Dataframe One 有 70000 个 obs 共 10 个变量 Dataframe Two 有 4500 个 obs 共 5 个变量 现在 我使用此代码检查了新数据框中的观察结果是如何留下
  • View.inflate 与 LayoutInflater

    使用上主要区别是什么LayoutInflater和静态方法View inflate 使用它们中的任何一个是否有任何缺点 或者它们可能有不同的用途 如果看源码的话View inflate 我们看到这个 public static View i
  • 在我的活动过程中保持屏幕处于唤醒状态

    我的应用程序中有三项活动 我想在第二个活动时保持屏幕唤醒 除非手动按下 锁定 键 否则屏幕在我的第二个活动中不应关闭 我浏览了很多链接 但它们对我来说似乎不清楚 正如 Android 教程中所讨论的保持屏幕开启 https develope
  • 加载活动选项卡页面源的 Chrome 扩展

    我希望你可以帮助我 我正在尝试在 Chrome 中创建一个扩展 它将活动选项卡的源加载到变量中 到目前为止我有 清单 json name My Extension manifest version 2 version 0 1 descrip
  • 如何调整文本字体大小以适合文本视图

    android 有没有办法调整文本视图中的文本大小以适应其占用的空间 例如 我正在使用一个TableLayout并添加几个TextViews 到每一行 因为我不想要TextView我宁愿看到它降低了内容的字体大小 有任何想法吗 我努力了me
  • 使用 gradle-experimental:0.2.0 签署 android apk

    我已经成功修改了我的 build gradle 以与 gradle experimental 一起使用 但是当尝试添加签名配置块时它失败了 我按照以下指示进行操作http tools android com tech docs new bu
  • Objective-C 标头中的冒号对齐

    我想使用 uncrustify 来对齐冒号上的参数 但取得了一些有限的成功 使用中的信息Uncrustify 可以在 Objective C 方法调用中对齐冒号吗 https stackoverflow com questions 9387
  • 更改 vuetify 网格中的列宽

    我在行下有三列 每列的 cols 值为 4 我想减小 col1 的宽度 我尝试将 cols 值从 4 更改为 3 但列变得比我预期的要小 所以我想要一个介于 3 到 4 之间的 cols 值 考虑 cols 值为 3 5 我有办法实现这个目
  • tycho 插件 + maven-dependency-plugin:从本地项目而不是存储库复制依赖项

    主要目标 将项目部署为 jarandeclipse 插件 当前状态 项目构建良好 作为 jar 包 现在我想创建第二个项目 将 jar 项目包装为 eclipse 插件 使用 tycho maven plugin 创建 eclipse pl
  • 将 generated-sources 作为源文件夹添加到 Eclipse

    我正在使用 maven jaxb plugin 基于 xsd 文件生成类文件源
  • PHP 重定向相同地址不同端口

    现在我有这个 header Refresh 0 url http 192 168 100 100 10500 redirect2 php 我怎样才能做同样的重定向但不写地址 只写端口 这两个文件位于同一服务器上的同一文件夹中 问题是我不知道
  • 获取 cURL 以跟踪重定向

    我在 Laravel 中有一个应用程序 可以抓取网站并检索特定信息 最近我看到越来越多的网站出现 403 禁止访问 所以我决定第一次尝试 cURL 我现在遇到的唯一问题是 对于具有 301 或 302 重定向的网站 cURL 不遵循它们 这