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

CURL 有些无法采集

  •  
  •   mofei828 · 2016-01-24 22:32:58 +08:00 · 3007 次点击
    这是一个创建于 3228 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位大神好,本人小白,没学过啥代码,求教为啥 CURL 有些网站无法采集。起初先知道的 file_get_contents 函数,但是发现请求很慢,如果同时采集好几个页面,那打开要十几秒。谷歌后又知道了 CURL 函数,可是问题又来了,有些页面可以采集,有些采集不了。百度了下说是什么要伪装、模拟、 cookie 之类的,求大神指点,能直接给出代码更好!谢谢
    8 条回复    2016-01-25 09:15:36 +08:00
    flynaj
        1
    flynaj  
       2016-01-24 22:38:02 +08:00 via Android
    就是那些了,模拟成浏览器
    lxjsmdc
        2
    lxjsmdc  
       2016-01-24 22:48:49 +08:00
    有些判了 UA
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr 1.0');

    有些还判了 REF
    function007
        3
    function007  
       2016-01-24 22:52:23 +08:00
    采集延迟你用 curl 也不会有改善的,得用 stream_socket_client
    eoo
        4
    eoo  
       2016-01-25 00:32:53 +08:00 via Android
    @function007 目标主机就那鸟速度了 你用 sock..还不是龟速。
    mofei828
        5
    mofei828  
    OP
       2016-01-25 01:16:29 +08:00
    @eoo 请问大神有啥其他的方法不
    function007
        6
    function007  
       2016-01-25 01:33:19 +08:00
    @eoo 可以把请求一次发完再去拿结果,等于是并发的,长连接的复用本身除了节省 TCP 开支时间之外也可以提高传输速度
    几个页面十几秒,如果是因为目标网速的限制,那服务器估计是 ADSL 拨号上网的
    eoo
        7
    eoo  
       2016-01-25 09:13:56 +08:00 via Android
    @function007 CURL 也能实现并发 和长链接,而且 socket 太过底层 你让他一个新手 去搞 为难他了。
    eoo
        8
    eoo  
       2016-01-25 09:15:36 +08:00 via Android
    @mofei828 处理速度 取决你的机器和目标机器,没啥其他方法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:17 · PVG 05:17 · LAX 13:17 · JFK 16:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.