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

两个问题:关于模拟浏览器与 curl

  •  
  •   hxndg · 2015-08-17 05:19:26 +08:00 via Android · 3220 次点击
    这是一个创建于 3167 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近遇上这样的三个问题
    1使用java 获取某网页载入速度,包括下载速度,dns查询时间等等,这种前端的东西,是不是纯java做不了?如果要做我是不是需要嵌个webkit进去?
    2使用命令行curl下载网页,使用他内置的time_namelookup获得的dns查询才2ms,而看阿里测的历史记录上dns时间是80多ms,为什么?
    12 条回复    2015-08-20 17:47:13 +08:00
    hxndg
        1
    hxndg  
    OP
       2015-08-17 05:20:04 +08:00 via Android
    这确实是三个问题←_←
    binux
        2
    binux  
       2015-08-17 05:23:08 +08:00
    1、不是,不需要
    2、缓存了
    SoloCompany
        3
    SoloCompany  
       2015-08-17 08:40:38 +08:00
    1. 载入速度怎么定义?如果你要完全模拟整个网页加载过程,包括执行 javascript,那当然需要一个浏览器引擎。java 的话有 JxBrowser (不是免费的),类似于 node webkit,当然这两个都不是小家伙
    如果仅仅是做一下简单的HTML解释及资源提取来模拟网页载入,当然不需要依赖太多的东西

    2. 如果不想被缓存干扰,用 dig
    ljbha007
        4
    ljbha007  
       2015-08-17 09:10:27 +08:00
    如果要包括javascript的载入与执行可以用phantom.js
    如果仅仅是下载时间和dns查询时间 用java就行了

    下载: new URL("http://www.google.com").openConnection().getInputStream()
    DNS查询:InetAddress.getByName("www.google.com")
    hxndg
        5
    hxndg  
    OP
       2015-08-17 15:47:32 +08:00
    @binux
    1 how?
    hxndg
        6
    hxndg  
    OP
       2015-08-17 15:49:30 +08:00
    @SoloCompany
    实际上确实是完全模拟整个网页加载过程
    binux
        7
    binux  
       2015-08-17 15:55:39 +08:00
    @hxndg 你举得例子,「下载速度, dns 查询时间」都不是「前端的东西」
    hxndg
        8
    hxndg  
    OP
       2015-08-17 16:08:34 +08:00
    @binux
    那么网页的载入速度(完全模拟整个网页加载过程),是不是纯 java 能做的?
    binux
        9
    binux  
       2015-08-17 16:37:57 +08:00 via Android
    @hxndg 这个不能
    beordle
        10
    beordle  
       2015-08-17 18:09:57 +08:00
    @binux 搜了一下还真有的... Lobo Java
    qige023
        11
    qige023  
       2015-08-20 01:39:38 +08:00
    语言洁癖是一件浪费生命的事情,为什么一定要纯 JAVA 呢,明明一个 phantom.js 就能做的事情,而且 webkit 也是最好的浏览器引擎之一,为什么要费劲找个 JAVA 实现呢,毕竟不可能每个人都像 @SoloCompany 这样精通 JAVA 的大神,能自己写一套轮子。

    再举个例子,比如我们要做一个手游 C#, Shaders , JS , Flash AS , Python , Lua , Go , Ojc , Java 全都可能要用上,因为特定领域,就是这个语言才能“更好的”解决这样的问题。
    hxndg
        12
    hxndg  
    OP
       2015-08-20 17:47:13 +08:00
    @qige023 我也想用 前端,但是语言的裁定不是我能决定的。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2927 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:03 · PVG 08:03 · LAX 17:03 · JFK 20:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.