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

2013-05-12 12:00:08 +08:00
 breeswish
(evil code那个是指不要随意复制网上代码到shell的那个帖子=。=找不到了好心人可以补一下……)

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

http://gist.github.com/5562673

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

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

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

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

z-index:-100000;
或者
position:absolute;
top:-10000px;
也可以啊
ljbha007
2013-05-13 21:15:54 +08:00
@PrideChung 好像不行
ljbha007
2013-05-13 21:49:27 +08:00
@PrideChung
想到办法了
<span>example@<span nonesense='WTF'>gmail</span>.com
PrideChung
2013-05-13 22:21:33 +08:00
@ljbha007 有啥用,直接用innerText就能拿到元素里面的纯文本了,根本不管你的标签。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/68558

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX