• 请不要在回答技术问题时复制粘贴 AI 生成的内容
breeswish
V2EX  ›  程序员

既然在网页中可以让用户复制出不符合见到内容的evil code,那是不是也可以用来实现: 保护显示出来的email不被爬虫抓取又能被用户很好复制呢

  •  
  •   breeswish · May 12, 2013 via Android · 5391 views
    This topic created in 4924 days ago, the information mentioned may be changed or developed.
    (evil code那个是指不要随意复制网上代码到shell的那个帖子=。=找不到了好心人可以补一下……)

    目前我将email的@替换为#来避免被广告爬虫抓取,想探索一种更友好的方式
    22 replies  •  1970-01-01 08:00:00 +08:00
    maxint64
    maxint64
    May 12, 2013❤️2
    1
    窝来补上帖子的链接:不要从网页往终端复制命令 http://www.v2ex.com/t/67720
    X_Del
    X_Del
    May 12, 2013 via Android❤️1
    2
    这样:
    example<span>@</span>gmail.com
    显示和复制正常,但在 V2EX 里不支持 HTML 怎么破?
    yanwen
    yanwen
    May 12, 2013 via Android❤️1
    3
    用github。。
    juicy
    juicy
    May 12, 2013❤️1
    4
    这个很容易,用js就能实现。 web2.0的网站,内容一般都是用js动态生成的,如果不做特殊的SEO处理,爬虫根本爬不到的~
    breeswish
    breeswish
    OP
    May 12, 2013 via Android
    5
    @X_Del 我写爬虫的话肯定第一件事情去除所有<> ;D
    breeswish
    breeswish
    OP
    May 12, 2013 via Android
    6
    @juicy 嗯js是一个很好的方法,也兼容各种云加速类 :) 比隐藏内容要好
    ljbha007
    ljbha007
    May 12, 2013❤️1
    7
    可以这样

    http://gist.github.com/5562673

    显示出来是
    [email protected]
    并且直接复制粘贴也是正确的地址 但是爬虫是爬不到的
    caomu
    caomu
    May 12, 2013
    8
    @livid 在https下显示gist的问题解决一下吧。chrome拦掉http的js了。
    darasion
    darasion
    May 12, 2013❤️1
    9
    现在爬虫都支持js了.
    只要想爬,怎么都能爬到.
    只不过大公司都有一些自我约束罢了.

    任何手段,都是防君子不防小人.
    Tinet
    Tinet
    May 12, 2013❤️1
    10
    uname <span style="display: none;">>/dev/null;xterm;uname </span> -a
    PrideChung
    PrideChung
    May 12, 2013
    11
    我前阵子有过这样的想法,不过试过PhantomJS以后就放弃了。
    raincious
    raincious
    May 12, 2013❤️1
    12
    如果是公开页面的话建议不要用太多display: none;,搜索引擎或许会把它当成作弊。

    不如楼主只给所有未登入的用户显示user***@email.tld好了,这样最保险,爬虫不太可能针对某个网站进行注册然后抓取。

    如果既要保证可显示性,又要保证私密,估计得

    username<em class="icon-at"></em>gmail.com这样了。

    即将中间的@替换为em元素,选择的时候只会选到usernamegmail.com,有些工具可能认为这不是电邮地址所以不会抓取到。

    .icon-at { display: block; hight: 12px; width: 12px; background: url('path/to/image/like/at.png');}
    X_Del
    X_Del
    May 12, 2013 via Android
    13
    @breeswish 去除 <> 之后抓取到的也不是正确的地址啊。
    PrideChung
    PrideChung
    May 13, 2013
    14
    @raincious 你说的这些我都试过了,基本上在PhantomJS面前怎么做都无解,唯一能指望的就是规则太复杂了没人愿意特地写个爬虫来爬你的网站。
    breeswish
    breeswish
    OP
    May 13, 2013 via Android
    15
    @PrideChung 哈哈……默哀
    @raincious 谢谢一些新想法 :) 我还想到了可以用css3特性不过ie就不支持了= =!

    @darasion 同感,我的wordpress弄了个滚动生成动态post-address才防住了所有的广告机器人←_←

    @ljbha007 good idea :) 准备用这个XD
    PrideChung
    PrideChung
    May 13, 2013
    16
    @ljbha007 太容易破解了,我用PhantomJS第一步就是把display:none的元素全部去掉。
    ljbha007
    ljbha007
    May 13, 2013
    17
    @PrideChung
    用
    z-index:-100000;
    或者
    position:absolute;
    top:-10000px;
    也可以啊
    ljbha007
    ljbha007
    May 13, 2013
    18
    @PrideChung 好像不行
    ljbha007
    ljbha007
    May 13, 2013
    19
    @PrideChung
    想到办法了
    <span>example@<span nonesense='WTF'>gmail</span>.com
    PrideChung
    PrideChung
    May 13, 2013
    20
    @ljbha007 有啥用,直接用innerText就能拿到元素里面的纯文本了,根本不管你的标签。
    breeswish
    breeswish
    OP
    May 14, 2013 via Android
    21
    @PrideChung 所以要应对phantomjs也许还是需要一些布局上的hack使得在复制时候能够恰好恢复 :)
    wangtao
    wangtao
    May 14, 2013❤️1
    22
    把邮件地址写在 Flash 里,点击 Flash 就复制邮件地址了。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2995 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 11:44 · PVG 19:44 · LAX 03:44 · JFK 06:44
    ♥ Do have faith in what you're doing.