file_get_contents() 修改后的 HTTP 标头返回垃圾 html 输出

2024-03-31

以下代码用于使用 PHP 的 SIMPLETHTMLDOM 解析器提取 html。

include('simple_html_dom.php');

$context = stream_context_create(array(
  'http'=>array(
    'method'=>"GET",                
    'header'=>"Accept: text/html,application/xhtml+xml,application/xml\r\n" .
              "Accept-Charset: ISO-8859-1,utf-8\r\n" .
              "Accept-Encoding: gzip,deflate,sdch\r\n" .
              "Accept-Language: en-US,en;q=0.8\r\n",
    'user_agent'=>"User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11\r\n"              
 )
)); 

$html = file_get_contents('http://www.nseindia.com/content/equities/cmbhav.htm', false, $context);
echo $html;

foreach($html->find('a') as $e) 
    echo $e->href . '<br>';

生成的输出是垃圾 html :

‹µVßsâ6~Ï_¡s§¹ð2¹^:ìNˆÝ†)!ið=äéFØV"K>I˜pMÿ÷®lCšéÝKy@+í­¾ý´òè]t}‘ÜÝÄä2¹š’›Oãéä‚x]J'qò¥Q5š=ŸÒxæ…G£Ü À2,·ÂÙ<&]YsËÁ 8eŒ%ãœU©*·#Úئ“Ù$×°<* ôRc<¢AóänÏ/ã8!v[B`áÑRÔâ&Õ¼´D0¹Z³Þ=«X³è£SuohªŠBÉåZ¦¦wo¼pD“o*¦ 7“88ÉTº.@Ú¢ókà[ålþÓ­`[ÐæÀà,8yö_¸Pãí$ëŸHVñ³J÷XYÎXAð~Ö¤¬„÷ƒXŠÜ³óôTg/ "Wª×'ñÓSmÖgm‡€åJ’œÉL@¬µÒ'ò—»Ö’X½†áßdÃe¦6=%ÁéIðÒzH0«¸ÂìÍIgxô@>W¾|°´xäÃBЖ5ãëèŽ,V©JÞËúççU0½â2ð‰Uå^n„ø*·¨j¦žÙ<𱾯ˆt˜zùº.GxöjjìV AÅ _pÁívó,9$¥2H[%la”X[":zÐ/‡¤Ù´‘¿v5xô‡uªnÄ,}G6Ì3IÎÇÓ˜¤ „)YÊå ³](FÁ-—,Ëšåö4}ßÿ­Æ¿wÝî! 3V‘1²rn™¶†\‚†nõÿu£æœ?ºÔí0p,³aQ{¡¤Åz“s ì_ÛÚ¬$8ó}R1ÁW2Àsï{O§7çQ4™ýŽ§t³ùÍùE3_ßFñ-.7ÕúøËi‹h°?øná£+%î…¬@ðdðáÅ^$̘Àx3—&±¶ä˜‰ÃŸ¡óB‡ÇraÊaó&m§ÉU%¶Ž6//¼Ä™s Ç+;$;+l 5Ú6†Âg.­VÙº¾PÎ9Üõ¸ïô/,—U»^1ý–Lp®æ·²ËÁ{3    ¤;:Z•±ms€6RâVÈ>ÈaÓ­ñp˜à ¶BTs,¹uu‹Úzôý±M¢FñªÀKĤÅÞ]]ÐáAgÇíMèöiö*[ûN×Ç]±ÚJì@ιÁfÈS&hüç§I2‰çôÔïŸÒ«ó[šþÏ8ºù_|$ªÞW^zï¶Ö@Â&ŒÔF Å2²ä—Hƒ¬CdD?ÿ‡\²ÅòÛ¹ ÑA.Ïø¤xÏ@¿Iè£7)à`pi¢¬Ét‰ÖÐæÄæ°gk0jB<=óšé4çºês>¿Ð.]¤Âhš ­›\jvìÒ¦æ”S8>Ѻï9‰V÷±W åu»ixH-[à—º¸ÇÀ͇Å?§m2“

我哪里做错了!!我检查了来自 fiddler 的标题信​​息。这些是用浏览器打开链接时的实际标题信息!

[Client]
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11
[Transport]
Host: www.nseindia.com
Proxy-Connection: keep-alive

在 HTTP 请求中,您明确声明您可以处理压缩数据,因此这就是服务器返回的内容:

Accept-Encoding: gzip,deflate,sdch\r\n

您现在必须解码该压缩数据:

$html = gzuncompress($html);

As piotrekkr在评论中提及,您也可以删除Accept-Encodingheader 和 Web 服务器应该返回纯文本。

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

file_get_contents() 修改后的 HTTP 标头返回垃圾 html 输出 的相关文章

  • 如何将 JSON 文本转换为 PHP 关联数组

    我将以下 JSON 对象存储在文本文件 data txt 中 player black time 0 from 2c to 3d 我使用 php 阅读 问题 有没有简单的方法可以转换 data到 PHP 关联数组 我尝试过使用json de
  • Laravel - 删除整个集合

    我有文章的图像 当我更新文章时 我想检查图像是否相同 如果不是 我想删除它们 但如果可能的话 我想删除整个集合而不进行其他查询 诸如此类就像我在下面的代码中一样 images gt delete 这是我的功能 images Media wh
  • 使用“manage_pages”权限创建页面访问令牌时收到警告

    当我尝试获取具有 manage pages 权限的 page access 令牌时 我收到以下警告 以下权限尚未批准使用 manage pages 如果您公开您的应用程序 它们将不会向使用您应用程序的人显示 提交它们以供审核或了解更多信息
  • 如何覆盖 suhosin 最大值?

    suhosin 正在过滤一个重要的 GET 参数 当以下方法不起作用时 如何覆盖 suhosin public html php ini suhosin suhosin get max value length 2048 将 suhosin
  • 使用 PHP 代码和 HTML 表单将 Excel (.csv) 导入 MySQL

    我知道还有其他类似的帖子 但每个人都建议直接在 PHPMyAdmin 中将其导入 MySQL 这工作完美 但我需要通过 HTML 表单导入 PHP 到 MySQL 我想要一个收集文件的 HTML 表单 然后将该文件传递给 PHP 脚本 我想
  • jQuery 清除 DOM 先前加载的脚本

    大家好 我正在开发一个项目 我使用 jQuery 将页面加载到 div 中 每个页面都有自己的 jQuery 脚本 我的问题是以前加载的脚本没有从 DOM 中清除 这给我的项目带来了更大的问题 例如 我在一个页面中有一组计时器 它会自动保存
  • 验证数据库匹配中的 $_GET id 是否足够安全?

    我的网站上有 2 个页面 一个是 index php 索引页面列出了数据库中存在的所有帖子 另一个页面是 post php 当单击索引页面上的特定帖子时 帖子页面显示单个帖子 现在我用来列出 index php 上所有帖子的代码是 post
  • 登录代码示例已通过 SQL 注入被黑客攻击,尽管 mysql_real_escape_string...

    我使用 CodeIgniter 但在黑客攻击方面遇到了麻烦 是否可以对以下登录代码进行 SQL 注入 function process login username mysql real escape string this gt inpu
  • Kohana_Exception [ 0 ]:需要有效的 cookie salt。请设置 Cookie::$salt

    我正在学习本教程 http kowsercse com 2011 09 04 kohana tutorial beginners http kowsercse com 2011 09 04 kohana tutorial beginners
  • 执行数组内的函数

    是否可以从数组内部执行匿名函数 也在数组内部定义 return execute function logic 或者我应该在外面定义它然后再调用它 从技术上讲 您可以将该函数括在括号中并像这样调用它 return function retur
  • 在php中对带有特殊字符的多维数组进行排序

    我有一个多维数组 我按字母顺序排序 但问题是 带有丹麦语特殊字符 它们应该按该顺序排序 但不会按该顺序返回 这是我的数组 部分已删除 Array 0 gt Array Name gt John 1 gt Array Name gt Pate
  • FOSUserBundle & REST Api 调用:如何使用自定义 FormType?

    我在我的 Symfony2 网站上使用 FOSUserBundle 现在我正在开发一个 API 以允许通过 REST API 调用进行注册 我已经覆盖了 FOSUserBundle 的 RegistrationController ApiR
  • 在 PHP 中使用 file_get_contents 进行 PUT 请求的错误请求

    这个 api 调用使用 Postman REST 客户端 可以正常工作 但是当我的 GAE 应用程序中的服务器上发出请求时 我当前收到以下错误 HTTP 请求失败 在 C Projects app file php 第 26 行 打开流失败
  • 为什么 mysqli num_rows 总是返回 0?

    我在使用 mysqli 获取要返回的行数时遇到了问题 尽管确实有一些结果 但我每次都只是得到 0 if stmt mysqli gt prepare SELECT id title visible parent id FROM conten
  • 基本的 simpleXML 工作示例?

    看起来 PHP 中的 simpleXML 有很多问题 我在 Windows 上运行最新版本的 php 但无法让 simpleXML 的基本示例按照文档中的方式工作 我的 xml 文件是
  • PHP 5 的 SQLite 编译设置是什么?

    SQLite 3 7 附带了新的预写日志记录 WAL http www sqlite org wal html并且有很多设置可以被配置 http www sqlite org compile html 但是 似乎没有任何方法可以改变任何事情
  • PDO fetch() 失败时会抛出异常吗?

    有没有方法PDO语句 fetch http php net manual en pdostatement fetch php如果 PDO 错误报告系统设置为抛出异常 则在失败时抛出异常 例如 如果我设置 PDO ATTR ERRMODE g
  • zend 模块特定配置问题

    我使用 zend 框架构建 REST Web 服务 并且使用模块来分隔我的 api 版本 现在 我想为每个模块 v1 和 v2 都有一个单独的配置文件 主要用于指定单独的数据库连接 我有这样的目录结构 application modules
  • PHP 错误请求中 HTTP 请求失败

    我可以直接从浏览器请求 URL Web 服务 WS 但是当我在代码中使用 file get contents 或 fopen 方法时 我收到一条错误消息 有人有不使用curl的解决方案吗 public function sendHttpRe
  • 为 SimpleXMLElements 数组编写 foreach 循环

    我正在使用 PHP 5 中的 XPath 来解析 XML 文档 我遇到的问题是写一个foreach正确显示以下数组 XML 文档示例 值1 值2 xmlfile link to file xml xmlRaw file get conten

随机推荐

  • 使用 Android 应用程序 (.apk) 安装键盘布局文件 (.kl)

    我已经尝试和搜索了几天 但无法为我的问题找到任何解决方案 我正在尝试在 system usr keylayout 中安装 kl 文件以重新映射我的应用程序的一些键盘按键 我有正确格式的正确 kl 文件 Vender XXXX Product
  • PHP 将 url 传递给index.php

    这应该非常简单 但我希望能够像 php 框架一样使用 url 作为变量 mywebsite com hello world 我希望我的index php 将 hello world 视为变量 并且我希望加载index php 这是通过 ph
  • 如何在Python中循环显示多个散点图?

    我正在尝试自动化大型数据框矩阵的绘制过程 目标是将每一列与另一列绘制在一起 每列代表一个变量 另请参见下图 F e 性别与年龄 性别与体重指数 性别与吸烟 性别与类型等等 为了清楚起见 我将问题简化为下图 在此输入图像描述 https i
  • 给定一个日期,如何有效地计算给定序列(每周、每月、每年)中的下一个日期?

    在我的应用程序中 我有多种日期序列 例如每周 每月和每年 给定过去的任意日期 我需要计算下一个日期future序列中的日期 目前我正在使用次优循环 这是一个简化的示例 在 Ruby Rails 中 def calculate next da
  • 如何使用 Observables 而不是 Events 来监听 Angular Ionic 中的关闭事件

    我正在使用 ionic 的内联模式 这是由布尔值触发的 https ionicframework com docs api modal using isopen 但是 当模式被关闭时 布尔值不会自动设置为零 根据 ionic 的文档 开发人
  • viewpager 内的水平滚动视图

    我有一个 2 到 4 页的 viewpager 其中一页以表格形式显示数据 为此 我使用垂直滚动和水平滚动 由于horizo ntalscrollview和viewpager之间的冲突 有时 滚动不起作用 我想在页面向左滚动时滚动页面 当它
  • gulp browserify 捆绑时间太长

    我遇到了一个奇怪的问题 需要你的帮助来弄清楚发生了什么 我已经配置了 gulp 来构建我的测试React js在 ES6 中 我用过browserify设置 CommonJS 环境并babelify以获得更大的 ES6 支持 一切正常 只是
  • 矩阵作为应用函子,不是 Monad

    我遇到examples https stackoverflow com questions 7220436 good examples of not a functor functor applicative monad不是 Monad 的
  • 峰值检测代码

    我想计算实时信号在第一步中是否通过了一些阈值 在第一步中 我想检测真实信号是否低于这些阈值 以便检测信号中的峰值 我的Matlab代码 k 1 t 1 l 1 for i 1 length sm sm my signal if sm i g
  • 如何在Spring Security中动态切换应用程序上下文?

    我在我的 Web 应用程序中使用 Spring security 并使用 Javaconfig 最近 我们还在应用程序中添加了 Spring SAML 身份验证 并在经历了一些障碍后终于使其正常工作 在 的里面WebApplicationI
  • 您使用哪些工具在浏览器中调试 HTML/JS?

    我想收集适用于所有浏览器的最佳调试辅助工具 所以这可能是Firebug https addons mozilla org de firefox addon 1843对于 Firefox 那么你用什么来使用 IE 呢 苹果浏览器 歌剧 歌剧迷
  • C++:深度复制基类指针

    我四处搜索 似乎为了执行此操作 我需要更改我的基类 并想知道这是否是最好的方法 例如 我有一个基类 class Base 然后是一长串派生类 class Derived 1 public Base class Derived 2 publi
  • 仅将指定 div 的英文数字转换为波斯语/阿拉伯语

    我知道这个问题已经在这里回答了很多次 但我仍然没有得到确切的答案 我需要通过一些javascript将英文字母转换为波斯语 阿拉伯语字母 但不是整个页面 而是一个div或者更多 就像只针对特定类别一样 我遇到过这些代码 但不知道哪一个最好用
  • 指定形状宽度会生成错误:指定的尺寸对于当前图表类型无效

    我正在尝试将 Excel 图表另存为图像 通过整个代码 我调用了几个工作簿 查找所有工作表并保存所有图表 以下代码适用于 Excel 2007 和 2010 但由于 4 有可见的水平线和垂直线 如果我改变Round shp Width 4
  • Groupby pandas dataframe 具有相同值的两列

    我想要groupby A 和 B 中具有相同值的两列并制作cumsum基于该值所在的列 值的分组数据框示例 A B ValueA ValueB 0 b a 1 3 1 c a 2 2 2 a b 2 4 现在 如果该值位于 A 列中 则考虑
  • 从 Iron Python 生成 .NET 程序集

    我有一个 Iron Python 脚本 我想运行它 然后让 ipy 解释器输出一个可以在其他计算机上运行的程序集 我怎么做 是否有一个开关可以传递给 ipy exe 使用SharpDevelop 一种方法是使用夏普开发 http www i
  • 通过读取初始 .DBF 字节可以采用哪种标头格式?

    关于 DBF文件的第一个字节以及如何检测所使用的xbase版本 即文件其余部分的格式 我可以编译的最全面的列表是 Byte 0 x xxx x 001 0x 1 not used 0 000 0 010 0x02 FoxBASE 0 000
  • Ember.js - jQuery-masonry + 无限滚动

    我正在尝试在我的 ember 项目中实现无限滚动和砌体工作 砖石 砖块 是带有文字和图像的柱子 目前 我可以在页面初始加载时显示第一页并应用砌体 不过 我仍然需要执行 setTimeout 试图找出如何摆脱它 我还有基本的无限滚动代码 现在
  • 使用 Web 部署发布 ASP.NET MVC2 站点

    我目前使用 Web 部署 http learn iis net page aspx 346 web deploy http learn iis net page aspx 346 web deploy 发布我的 MVC2 应用程序 它曾经工
  • file_get_contents() 修改后的 HTTP 标头返回垃圾 html 输出

    以下代码用于使用 PHP 的 SIMPLETHTMLDOM 解析器提取 html include simple html dom php context stream context create array http gt array m