使用 PHP 的 fopen 打开知乎的 url 失败是怎么回事?

2015-09-30 16:44:18 +08:00
 musicq

我今天在学习 php 时,按照书本敲了一个存书签的小程序,简单来讲就是把一个 url 提交,然后使用 fopen 函数访问这个 url ,像下面这样

if(!(@fopen($new_url, 'r'))) {
  echo $new_url;
  throw new Exception('地址无效,请查证~');
}

然后测试了几个 url ,像

都没发现问题。

但是我想存一个知乎的 url 时居然会显示地址无效~

我把知乎的主页网址完全考下来存进去,也是不行。

这是什么情况,会不会是知乎这个网站的限制?还是说有什么其他原因导致失败?

3490 次点击
所在节点    PHP
14 条回复
yernsun
2015-09-30 16:47:23 +08:00
检查一下 gzip ,试试 file_get_contents("compress.zlib://".$url);,最好还是用 curl 吧
musicq
2015-09-30 16:58:37 +08:00
@yernsun 我刚试了一下,还是不行,我打开百度没有问题,就是知乎出错,有没有可能是知乎的限制
ck65
2015-09-30 17:09:52 +08:00
试试豆瓣?
xiamingchong
2015-09-30 17:15:40 +08:00
你需要把自己伪装成蜘蛛,或者把 refer 改成 v2ex
wesley
2015-09-30 17:19:20 +08:00
为什么不用 get_header
musicq
2015-09-30 17:21:29 +08:00
@ck65 豆瓣也无效!!什么情况。。。
musicq
2015-09-30 17:23:31 +08:00
@wesley 。。。其实不太懂,我刚看别人写的抓取其他网站的 icon ,也是用 file_get_contents 访问的,但是他就成功抓到知乎的 icon 了
star001007
2015-09-30 17:33:08 +08:00
你们最近怎么老都在抓知乎。。。
lhx2008
2015-09-30 17:34:43 +08:00
你发了“人”的 HTTP HEADER 了么?
pmpio
2015-09-30 17:37:12 +08:00
他们网站可能有 UA 判断吧。。。。
programcat
2015-09-30 17:42:02 +08:00
user_agent
adexbn
2015-09-30 19:04:47 +08:00
user_agent
Omitted
2015-09-30 19:38:39 +08:00
@star001007 看 python 爬虫的入门教程,十个里面九个爬过知乎
ck65
2015-09-30 20:11:23 +08:00
我最近也在做类似的 web app 。豆瓣好像有一道跳转,第一道抓取就获取不到真实的网页内容。。我太菜了没法搞定就先没管了(姚明

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/224827

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX