两个问题:关于模拟浏览器与 curl - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答术问题时复制粘贴 AI 生成的内容
hxndg
V2EX    程序员

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

  •  
  •   hxndg 2015-08-17 05:19:26 +08:00 via Android 3551 次点击
    这是一个创建于 3708 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近遇上这样的三个问题
    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     Solana     907 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 21:59 PVG 05:59 LAX 14:59 JFK 17:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86