V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
musicq
V2EX  ›  PHP

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

  •  
  •   musicq · 2015-09-30 16:44:18 +08:00 · 3522 次点击
    这是一个创建于 3371 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    然后测试了几个 url ,像

    • weibo.com
    • php.net
    • v2ex.com

    都没发现问题。

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

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

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

    img

    14 条回复    2015-09-30 20:11:23 +08:00
    yernsun
        1
    yernsun  
       2015-09-30 16:47:23 +08:00
    检查一下 gzip ,试试 file_get_contents("compress.zlib://".$url);,最好还是用 curl 吧
    musicq
        2
    musicq  
    OP
       2015-09-30 16:58:37 +08:00
    @yernsun 我刚试了一下,还是不行,我打开百度没有问题,就是知乎出错,有没有可能是知乎的限制
    ck65
        3
    ck65  
       2015-09-30 17:09:52 +08:00 via iPhone
    试试豆瓣?
    xiamingchong
        4
    xiamingchong  
       2015-09-30 17:15:40 +08:00
    你需要把自己伪装成蜘蛛,或者把 refer 改成 v2ex
    wesley
        5
    wesley  
       2015-09-30 17:19:20 +08:00
    为什么不用 get_header
    musicq
        6
    musicq  
    OP
       2015-09-30 17:21:29 +08:00
    @ck65 豆瓣也无效!!什么情况。。。
    musicq
        7
    musicq  
    OP
       2015-09-30 17:23:31 +08:00
    @wesley 。。。其实不太懂,我刚看别人写的抓取其他网站的 icon ,也是用 file_get_contents 访问的,但是他就成功抓到知乎的 icon 了
    star001007
        8
    star001007  
       2015-09-30 17:33:08 +08:00
    你们最近怎么老都在抓知乎。。。
    lhx2008
        9
    lhx2008  
       2015-09-30 17:34:43 +08:00
    你发了“人”的 HTTP HEADER 了么?
    pmpio
        10
    pmpio  
       2015-09-30 17:37:12 +08:00
    他们网站可能有 UA 判断吧。。。。
    programcat
        11
    programcat  
       2015-09-30 17:42:02 +08:00
    user_agent
    adexbn
        12
    adexbn  
       2015-09-30 19:04:47 +08:00 via iPhone
    user_agent
    Omitted
        13
    Omitted  
       2015-09-30 19:38:39 +08:00
    @star001007 看 python 爬虫的入门教程,十个里面九个爬过知乎
    ck65
        14
    ck65  
       2015-09-30 20:11:23 +08:00
    我最近也在做类似的 web app 。豆瓣好像有一道跳转,第一道抓取就获取不到真实的网页内容。。我太菜了没法搞定就先没管了(姚明
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:40 · PVG 02:40 · LAX 10:40 · JFK 13:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.