既然在网页中可以让用户复制出不符合见到内容的evil code,那是不是也可以用来实现: 保护显示出来的email不被爬虫抓取又能被用户很好复制呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
breeswish
V2EX    程序员

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

a href="Javascript:" Onclick="upVoteTopic(68558);" class="vote">
  •  
  •   breeswish 2013-05-12 12:00:08 +08:00 via Android 4556 次点击
    这是一个创建于 4537 天前的主题,其中的信息可能已经有所发展或是发生改变。
    (evil code那个是指不要随意复制网上代码到shell的那个帖子=。=找不到了好心人可以补一下……)

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

    http://gist.github.com/5562673

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

    任何手段,都是防君子不防小人.
    Tinet
        10
    Tinet  
       2013-05-12 18:47:44 +08:00   1
    uname <span style="display: none;">>/dev/null;xterm;uname </span> -a
    PrideChung
        11
    PrideChung  
       2013-05-12 21:27:25 +08:00
    我前阵子有过这样的想法,不过试过PhantomJS以后就放弃了。
    raincious
        12
    raincious  
       2013-05-12 21:43:14 +08:00   1
    如果是公开页面的话建议不要用太多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');}
        13
    X_Del  
       2013-05-12 22:47:43 +08:00 via Android
    @breeswish 去除 <> 之后抓取到的也不是正确的地址啊。
    PrideChung
        14
    PrideChung  
       2013-05-13 08:26:23 +08:00
    @raincious 你说的这些我都试过了,基本上在PhantomJS面前怎么做都无解,唯一能指望的就是规则太复杂了没人愿意特地写个爬虫来爬你的网站。
    breeswish
        15
    breeswish  
    OP
       2013-05-13 18:56:18 +08:00 via Android
    @PrideChung 哈哈……默哀
    @raincious 谢谢一些新想法 :) 我还想到了可以用css3特性不过ie就不支持了= =!

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

    @ljbha007 good idea :) 准备用这个XD
    PrideChung
        16
    PrideChung  
       2013-05-13 21:09:10 +08:00
    @ljbha007 太容易破解了,我用PhantomJS第一步就是把display:none的元素全部去掉。
    ljbha007
        17
    ljbha007  
       2013-05-13 21:14:03 +08:00
    @PrideChung

    z-index:-100000;
    或者
    position:absolute;
    top:-10000px;
    也可以啊
    ljbha007
        18
    ljbha007  
       2013-05-13 21:15:54 +08:00
    @PrideChung 好像不行
    ljbha007
        19
    ljbha007  
       2013-05-13 21:49:27 +08:00
    @PrideChung
    想到办法了
    <span>example@<span nOnesense='WTF'>gmail</span>.com
    PrideChung
        20
    PrideChung  
       2013-05-13 22:21:33 +08:00
    @ljbha007 有啥用,直接用innerText就能拿到元素里面的纯文本了,根本不管你的标签。
    breeswish
        21
    breeswish  
    OP
       2013-05-14 00:45:55 +08:00 via Android
    @PrideChung 所以要应对phantomjs也许还是需要一些布局上的hack使得在复制时候能够恰好恢复 :)
    wangtao
        22
    wangtao  
       2013-05-14 11:19:02 +08:00   1
    把邮件地址写在 Flash 里,点击 Flash 就复制邮件地址了。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3098 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 12:40 PVG 20:40 LAX 05:40 JFK 08:40
    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