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

有点搞不明白, Chinaz 的 ip 查询代码在调戏用户智商?

  •  
  •   alwayshere · 2017-04-10 09:18:10 +08:00 · 10786 次点击
    这是一个创建于 2785 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://ip.chinaz.com/

    看到下面的:“获取代码:把下面一小段代码加到你的主页中即可在您的网页上中显示来访用户的 IP 及其地区!”

    里面 js 的 url打开是一串 json ,我就想问问 chinaz 给我一串 json ,我该怎么用?而且服务器返回的 response header 也没有允许跨域使用,你给个 jsonp 不行么?官网还大大方方的贴在首页,不怕被业内人士贻笑大方么?

    第 1 条附言  ·  2017-04-10 09:51:42 +08:00
    好吧,我直接打开 script 的 url ,看到结果就开喷了,没有在实际网页中插入这个 script ,是我的错,能删帖么
    第 2 条附言  ·  2017-04-10 10:20:12 +08:00
    另外,这串 js : http://ip.chinaz.com/getip.aspx ,应该是根据 http_referer 来返回不同的结果,在实际插入网页中会多了一个 document.write ,不过写了前端这么多年, document.write 一个 json ,这么先进的编写方式我还是第一次遇到,估计我的代码水平真不如下面嘲讽我的人吧
    74 条回复    2017-04-11 18:28:07 +08:00
    coo
        1
    coo  
       2017-04-10 09:34:37 +08:00
    它没有让您打开 URL 啊,而是要带着 script 标签整个放到页面源码中。

    没有任何问题。
    xiaoyaoking
        2
    xiaoyaoking  
       2017-04-10 09:36:29 +08:00
    .....这也能喷???
    SourceMan
        3
    SourceMan  
       2017-04-10 09:36:35 +08:00
    。。。。。。
    不是把这段脚本粘贴放置在需要的网页下方吗?
    <script type="text/javascript" src="http://ip.chinaz.com/getip.aspx"></script>

    嗯嗯,确实是低估了用户智商了
    grimpil
        4
    grimpil  
       2017-04-10 09:37:57 +08:00 via Android   ❤️ 1
    楼主你上小学几年级?
    kokutou
        5
    kokutou  
       2017-04-10 09:37:59 +08:00 via Android   ❤️ 1
    角度刁钻。。。
    littleylv
        6
    littleylv  
       2017-04-10 09:39:01 +08:00
    2333333
    smallerpig
        7
    smallerpig  
       2017-04-10 09:40:02 +08:00
    楼主真是要被贻笑大方了~~
    160432871
        8
    160432871  
       2017-04-10 09:40:56 +08:00   ❤️ 1
    站长: MDZZ
    y1shan
        9
    y1shan  
       2017-04-10 09:43:07 +08:00
    楼主这个智商基本告别了程序猿
    KIDJourney
        10
    KIDJourney  
       2017-04-10 09:43:30 +08:00
    高估用户智商了。。。
    scusjs
        11
    scusjs  
       2017-04-10 09:44:23 +08:00
    第一反应我以为是我没睡醒
    lwbjing
        12
    lwbjing  
       2017-04-10 09:44:36 +08:00
    这特么就比较尴尬了...
    LeoSocks
        13
    LeoSocks  
       2017-04-10 09:45:38 +08:00 via iPhone
    楼主,捂脸,逃
    crab
        14
    crab  
       2017-04-10 09:46:29 +08:00   ❤️ 1
    楼主是缺铜币了吧
    thinkSky
        15
    thinkSky  
       2017-04-10 09:50:18 +08:00
    我特么差点 笑死了 是真的
    chairuosen
        16
    chairuosen  
       2017-04-10 09:52:23 +08:00
    LS 们,那段 html 只能在网页里显示一个 json 字符串,这才是楼主的意思
    hundan
        17
    hundan  
       2017-04-10 09:53:19 +08:00 via Android
    我想了想,楼主应该是刚学了 json 吧
    yulitian888
        18
    yulitian888  
       2017-04-10 09:53:27 +08:00
    可以围观一下吗?
    容我先笑一会!
    160432871
        19
    160432871  
       2017-04-10 09:55:20 +08:00
    V2EX 不能删贴的,我觉得这点非常好。说出去的话泼出去的水,所以说话前要慎重。
    coo
        20
    coo  
       2017-04-10 10:01:24 +08:00   ❤️ 1
    我试了, chinaz 的代码可能确实有点问题,用 script 标签的方式引用会返回:

    document.write("{ip:'xx.xx.xx.xx',address:'xx 省 xx 市 联通'}")

    而这段代码在界面上就成了一段 JSON ,和预期的效果并不是很符合。
    Kilerd
        21
    Kilerd  
       2017-04-10 10:04:49 +08:00 via iPhone
    生词本写完了?
    wly19960911
        22
    wly19960911  
       2017-04-10 10:06:21 +08:00
    @coo 在我这里都只是返回了一串 json ,不知道是不是因为本地 html 测试的原因,都没看见 jsonp ,很奇怪。
    kuaner
        23
    kuaner  
       2017-04-10 10:09:02 +08:00
    角度刁钻
    killerv
        24
    killerv  
       2017-04-10 10:15:28 +08:00
    @wly19960911 我测试了一下,本地 html 只返回 json ,在服务器上访问是 document.write("{ip:'xx.xxx.xx.xxx',address:'xxxx'}")
    wly19960911
        25
    wly19960911  
       2017-04-10 10:29:53 +08:00 via Android
    @killerv
    好的,看来他们是检验了下相关的参数返回不同结果的了,不过不是返回自定义的 jsonp 太难看了
    lijsh
        26
    lijsh  
       2017-04-10 10:31:23 +08:00   ❤️ 1
    错就错了,还继续钻牛角尖嘲讽别人,不地道。
    killerv
        27
    killerv  
       2017-04-10 10:33:06 +08:00
    @wly19960911 我也觉得不正常,不如提供一个 jsonP 的更加方便。
    vipwpcom
        28
    vipwpcom  
       2017-04-10 10:51:20 +08:00
    我来看热闹的
    ktlb
        29
    ktlb  
       2017-04-10 13:30:00 +08:00
    装逼失败
    vertas
        30
    vertas  
       2017-04-10 13:49:19 +08:00
    诚然, chinaz 是有不当之处,但是这帖子将成为楼主你永久的黑点。
    iPhone8
        31
    iPhone8  
       2017-04-10 13:51:29 +08:00
    又要开新号了,这个号基本废了
    yulitian888
        32
    yulitian888  
       2017-04-10 14:29:06 +08:00
    document.write 的写法并不像楼主补充中说的那么不可理解吧
    楼主不要忘了,这个域名被访问的时候,访问者并不一定是终端用户的浏览器,还有可能是一些自己写的爬虫......
    yulitian888
        33
    yulitian888  
       2017-04-10 14:34:40 +08:00
    补充一下,从代码语义上也说得通,<script type="text/javascript" src="......"></script>输出一个 js 片段,语义是合理的。而输出一个 json 对象么,不觉得难看?
    rrfeng
        34
    rrfeng  
       2017-04-10 14:40:59 +08:00
    所以这个站就被大家玩儿坏了?

    打不开了,提示请联系站长 QQ ……
    haocity
        35
    haocity  
       2017-04-10 14:41:31 +08:00
    @yulitian888
    document.write 直接把 json 写出来是不是有点太那个了?
    难道还要写进去个标签 再把 json 读出来用?
    Marfal
        36
    Marfal  
       2017-04-10 14:42:15 +08:00 via Android
    @smallerpig 我也来挑一下刺哈,“贻笑大方”前面不需要加“被”,这个成语表示被人取笑的意思
    Shura
        37
    Shura  
       2017-04-10 14:43:45 +08:00 via Android
    每次遇到这样的帖子都庆幸 V2EX 不能删帖。
    viosey
        38
    viosey  
       2017-04-10 14:55:24 +08:00 via Android
    今日最佳 doge
    hand515
        39
    hand515  
       2017-04-10 15:09:43 +08:00   ❤️ 2
    这个是支持 jsonp 协议的。。
    $(document).append('<script type="text/javascript" src="http://ip.chinaz.com/getip.aspx?callback=t123"></script>')

    t123({ip:'',address:''})
    hand515
        40
    hand515  
       2017-04-10 15:20:51 +08:00
    文档没写支持 jsonp ,这个 chinaz 肯定做得不够好了

    但 LZ 说自己都做了那么多年前端了,经验总会有吧,试试加个 callback 参数不用多少时间
    artisan
        41
    artisan  
       2017-04-10 16:03:44 +08:00
    震惊! Chinaz 的 ip 查询代码在调戏用户智商?!
    falcon05
        42
    falcon05  
       2017-04-10 16:34:31 +08:00 via iPhone
    喵喵喵?
    402645707
        43
    402645707  
       2017-04-10 16:35:37 +08:00
    你就算喷它用 iis+aspx 黑你的人也不会像现在这样
    smallerpig
        44
    smallerpig  
       2017-04-10 17:07:01 +08:00
    @Marfal 哈哈,谢谢提醒~
    sgissb1
        45
    sgissb1  
       2017-04-10 18:08:54 +08:00
    非 web 开发人员表示看不明白,求说破的。
    Antidictator
        46
    Antidictator  
       2017-04-10 18:20:36 +08:00 via Android
    @160432871 我每次发帖之前都查查自己用词是否准确😂😂😂
    402645707
        47
    402645707  
       2017-04-10 18:20:58 +08:00 via Android   ❤️ 2
    @sgissb1
    chinaz 使用说明:把那个盒子拿过来,里面是方便面,可以吃
    楼主的使用方法:把盒子打开,把里面的料包拿出来问这有什么用,又不能吃,智障吗,我难道还要自己准备面
    402645707
        48
    402645707  
       2017-04-10 18:22:40 +08:00 via Android
    @sgissb1 确切一点的话楼主应该拿着面饼和料包问这怎么吃,碗呢
    lslqtz
        49
    lslqtz  
       2017-04-10 18:39:12 +08:00
    没必要嘲讽楼主。
    我的反应也是这样,只能说楼主没多测试。
    而且站长这样做本来也是不太正确的,因为有些站点会禁用 Referer ,其次这个似乎是直接 write 出了 json 。
    而且关于其它协议没有做详细的说明,所以我不觉得楼主有什么问题。
    zhihaofans
        50
    zhihaofans  
       2017-04-10 18:48:48 +08:00 via iPhone
    看了一下楼主的回复我觉得不能怪楼主
    ichou
        51
    ichou  
       2017-04-10 18:55:22 +08:00 via iPhone
    @hand515 专业
    lslqtz
        52
    lslqtz  
       2017-04-10 18:57:57 +08:00
    @zhihaofans 我也看了下回复,所以补充一下我之前的回复:仅针对这个问题。
    alwayshere
        53
    alwayshere  
    OP
       2017-04-10 19:09:36 +08:00 via iPhone
    @402645707 我是真心请教你一下,这个 chinaz 的代码该怎么用?比如我想实现一个效果,在客户端浏览器显示:您当前的 IP 为: xxx.xx.xx.xxx,位于 xxxx ,通过 chinaz 的这段 js 怎么实现?小白请教一下,如果不行的话,您可不可以承认自己智障呢?
    realpg
        54
    realpg  
       2017-04-10 20:03:25 +08:00
    我觉得楼主说的一点毛病没有

    上面几乎所有嘲讽楼主的都没看问题么


    根据 chinaz 的说明和延时是这样的 上面是代码 下面是效果



    实际我把这段代码 copy 到我的网站是这样的
    sgissb1
        55
    sgissb1  
       2017-04-10 20:05:10 +08:00
    @402645707 谢谢纵欲看明白了,我看 lz 的帖子当时也觉得奇怪,发现一群人喷他,当时还站在 lz 一边。
    weiceshi
        56
    weiceshi  
       2017-04-10 21:36:42 +08:00   ❤️ 1
    @alwayshere 你要的用法



    代码在这里(晚饭后出来散步,看到这个帖子,实在看不下去,一半是手机编辑的,所以格式有点乱)
    http://codepen.io/anon/pen/wJVXqJ
    402645707
        57
    402645707  
       2017-04-10 21:47:20 +08:00
    我想说就算 document.write 了
    你直接 js replace 不就完事了
    高中生路过, js 自学了一个网上改完之后发现楼上有更好的正解

    准运维表示楼主垃低了我心目中前端的智商水平
    xz
        58
    xz  
       2017-04-10 21:57:03 +08:00 via Android
    @402645707 现在小孩子都这么毒吗
    why1
        59
    why1  
       2017-04-10 22:06:22 +08:00 via Android
    Content-Type: text/html; charset=utf-8
    喷吧
    shpasspass
        60
    shpasspass  
       2017-04-10 22:42:11 +08:00
    html 部分↓
    <div class="aa"><script type="text/javascript" src="http://ip.chinaz.com/getip.aspx"></script></div>
    js 部分↓
    var sss=$('.aa').html().replace(/<script.*script>/ig,'')
    console.log(eval("("+sss+")").ip)
    console.log(eval("("+sss+")").address)
    mingyun
        61
    mingyun  
       2017-04-10 23:05:36 +08:00
    @weiceshi nice
    Mitt
        62
    Mitt  
       2017-04-10 23:10:13 +08:00
    想不通为什么回复的人大部分用一种非官方解决方案去嘲讽 LZ 我去看了一下 ip.chinaz.com 的源码 他们甚至自己演示的代码展示效果都是直接渲染到页面中的 很明显 “把下面一小段代码加到你的主页中即可在您的网页上中显示来访用户的 IP 及其地区!” 是一种极大的误导啊 虽然说技术手段解决这个问题不是问题 但是给出这段代码好歹给个官方支持的使用方法吧? PS: 建议 LS 说话不要上来问候智商,先想一遍为什么 LZ 会发这个帖子问这个问题 再来问候智商
    alwayshere
        63
    alwayshere  
    OP
       2017-04-10 23:35:29 +08:00 via iPhone
    @shpasspass 一个 jsonp 就可以搞定的, chinaz 非逼得这么做,感觉是脱了裤子放屁
    weiceshi
        64
    weiceshi  
       2017-04-10 23:42:48 +08:00 via Android
    @alwayshere
    39,56 两楼都告诉你支持 jsonp 了,你还在这里打滚?
    patx
        65
    patx  
       2017-04-11 00:20:58 +08:00
    v2 不能删帖有时还挺好的。。。
    ID2333
        66
    ID2333  
       2017-04-11 08:51:38 +08:00
    我就静静看(⊙o⊙)~磕嗑瓜子儿
    ACTom
        67
    ACTom  
       2017-04-11 09:12:27 +08:00
    不管用户能怎么 hack 得到想要的结果,那也不能改变文档本来就有问题这一点
    402645707
        68
    402645707  
       2017-04-11 09:19:16 +08:00
    @xz 站长高中的时候已经把 V2EX 建起来了
    kiwi95
        69
    kiwi95  
       2017-04-11 09:32:01 +08:00
    这就是做了前端这么多年的水平??不是很懂前端
    killerv
        70
    killerv  
       2017-04-11 09:38:11 +08:00
    今天看到这个帖子成了热门帖,有必要这么嘲讽吗?
    “把下面一小段代码加到你的主页中即可在您的网页上中显示来访用户的 IP 及其地区!”
    chinaz 的说明是有问题的,直接按照他的说明操作显示的确实不是预期效果。我认为,只要自己的产品被别人使用,就应该提供正确的使用文档,而不是让其他人去猜、测试。
    ragnaroks
        71
    ragnaroks  
       2017-04-11 10:27:04 +08:00
    一黑黑两
    flyingghost
        72
    flyingghost  
       2017-04-11 13:06:03 +08:00
    事情是这样的:
    1 ,上古时期,大家都是提供<script></script>标签,内容是直接 document.write ,文档如实描述。
    2 ,后来发现,这种方式打包了数据和展示,并不很科学。一个接口,应该只做接口该做的事:如实返回数据,让应用层去决定如何展示。所以,返回了 json 结构体。
    3 ,无奈老用户非常多,让大家都修改代码不现实。于是做了兼容:如果是浏览器直接访问,返回 document.write (和以前逻辑保持一致);如果是 ajax 调用,只返回 json 数据。(显然这点没做好)
    4 ,再后来,为了方便使用者,支持了 jsonp 。
    5 ,在做 234 演进的时候,文档 1 并没有做任何更新。

    看问题,要有历史观和发展观。/doge
    yulitian888
        73
    yulitian888  
       2017-04-11 14:56:21 +08:00
    @flyingghost 言之有理
    也是一个文档和程序脱节的好例子
    mringg
        74
    mringg  
       2017-04-11 18:28:07 +08:00
    这事是楼主一生的黑点了。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2769 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:37 · PVG 08:37 · LAX 16:37 · JFK 19:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.