coudflare 的邮件地址保护(混淆) 如何破?

2016-05-27 09:58:20 +08:00
 FindHao

使用了 cloudflare 的服务,如果开启了 email Obfuscation ,页面里真正的 email 地址会被隐藏,但是人在浏览的时候是没有问题的,在爬的时候,单纯用 requests , cookie , session 等获得的还是被保护的信息:

<a class="__cf_email__" data-cfemail="3645425d595b574476424618535243184551" href="/cdn-cgi/l/email-protection">
[email protected]
</a>
<script data-cfhash="f9e31" type="text/javascript">
 /* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */
</script>

在官网关于 email Obfuscation 里有这样的说明:

A page should have a MIME type (Content-Type) of "text/html" or "application/xhtml+xml" for the email obfuscation to happen. For instance, if you're doing some ajax calls, and wish to return email addresses in a JSON format, make sure your webserver returns a type of "application/json"

想了解下它的原理。

它的your webserver returns a type of "application/json"是什么意思?爬虫发送这个类型的请求没法得到正确的响应页面。

7080 次点击
所在节点    Python
14 条回复
notgod
2016-05-27 10:04:26 +08:00
[code]

package main

import (
"bytes"
"strconv"
)

func cf(a string) (s string) {
var e bytes.Buffer
r, _ := strconv.ParseInt(a[0:2], 16, 0)
for n := 4; n < len(a)+2; n += 2 {
i, _ := strconv.ParseInt(a[n-2:n], 16, 0)
e.WriteString(string(i ^ r))
}
return e.String()
}

func main() {
email := cf("f091809582839f9eb080999e97848582849c95de939f9d")
print(email)
print("\n")
}

[/code]
notgod
2016-05-27 10:08:33 +08:00
Go Lang
https://gist.github.com/AbeEstrada/11e4511f9915b00f9714

PHP

···php
echo 'Decoded Email: '.deCFEmail('f091809582839f9eb080999e97848582849c95de939f9d');
function deCFEmail($c){
$k = hexdec(substr($c,0,2));
for($i=2,$m='';$i<strlen($c)-1;$i+=2)$m.=chr(hexdec(substr($c,$i,2))^$k);
return $m;
}
```
kslr
2016-05-27 11:24:27 +08:00
@notgod 你这是助纣为孽
kslr
2016-05-27 11:25:36 +08:00
@notgod 每天邮箱里面的垃圾邮件还不够受的吗,你看看各种发邮箱的时候各种编码,不就是为了躲避。
Marfal
2016-05-27 11:38:53 +08:00
@kslr 这样技术才能发展啊,掩耳盗铃只对自己有效,你不知道不代表别人不知道。
kslr
2016-05-27 12:11:13 +08:00
@Marfal “呵呵” 我已经给 cloudflare 发了邮件,请求更改算法。
zsj950618
2016-05-27 12:21:20 +08:00
竟然不是用图片来做保护。。。。。
guoer
2016-05-27 12:49:59 +08:00
lz 的问题是 cf 如何精准的区分人和爬虫的吧
FindHao
2016-05-27 13:08:18 +08:00
@notgod 感谢
@kslr 我是在给别人做提取信息,只是供展示而非滥发邮件。如果按照 cloudflare 的说法,实际上是可以给个接口的。
@guoer 的确也存在疑惑。
just1
2016-05-27 13:08:57 +08:00
用户收到的也是混淆的啊,只是 js 传唤出来了而已
notgod
2016-05-27 17:35:10 +08:00
@kslr 本来是不想回你的 不过你这么上纲上线 我就跟你讨论讨论说道说道
这里只是单纯讨论技术问题

其 1. 题主在询问的是问题 我只是个搬运工
pingturtle.com/home/post/cloudflare-email-protection-decoder
Jan 24, 2012
这个问题 2012 年就已经有解决方案了
这个只是个简单的输出混淆 并不涉及加密 如果是对称加密 没密匙解密不了
但是这个不适合前端

其 2. 垃圾邮件人人都恨 但是这个回复只是邮件地址的分析
技术的存在本身并无善恶 在于用的人 题主并不是一定用在恶的方面
而且现在的反垃圾邮件已经非常成熟了 我使用的 Gmail Outlook 垃圾邮件判断非常精准
阻止垃圾邮件 要从源头去解决 如果你有能力 可以去开发反垃圾邮件网关这类的技术
没有必要为一个清除数据混淆的算法而抨击我什么助纣为孽
如果真不要垃圾邮件 直接不使用邮箱服务不是彻底解决了?

其 3. 助纣为孽这么上纲上线对于我们真没必要
百度推广卖假药 你能说百度助纣为孽 但是百度还存在吗?

其 4. 您给 cloudflare 发了邮件,请求更改算法。
这是您的权利, 同样的道理 你也可以发邮件给百度 让他们关闭推广
技术的角度 CF 是前端输出内容给用户看 这个输出必须是可见的 无论如何混淆 都可以还原 只是算法而已
和魔方一个道理 懂的人 无论如何都可以还原
您应该告诉 Cloudflare 去提高识别率 判断人类和机器的行为 提高判断的准确度

我是很心平气和的和您讨论这个事 希望能明白

@Marfal 同意你观点,每种技术的出现 都是有攻有守 才能进步 这就是为什么存在白帽子和黑帽子的原因
相对论 必须有对立的部分 才能推动一种技术的成熟和进步



@guoer 对的 我也觉得应该重心放在人类访问和机器访问的判断上
但是 Cloudflare 要考虑性能 不太可能和 Google 验证码那样 通过鼠标轨迹 点击轨迹 /频率去判断
提高识别率 更精准 才是正道
kslr
2016-05-27 17:40:17 +08:00
@notgod 这个问题不需要讨论下去了,立场不同,我是非常讨厌垃圾邮件的,所以也会不遗余力的使用我的能力支持任何合理的行为。
msg7086
2016-05-28 05:43:39 +08:00
@kslr 没有任何合理的地方。
我偷了你的银行密码,但是我告诉你我没偷,你就放心了;我告诉你我偷了,你就方了?
这已经不是立场的问题了。
你让 CF 改算法,不明真相的人以为以后他们的邮件地址就很安全了,然后黑帽子照样花个 5 分钟破解了继续发辣鸡邮件,这样用户就没有损失了么。
强行隐瞒事实,麻痹其他用户,才叫助纣为虐。
franklinyu
2016-05-28 08:25:18 +08:00
確實,從原理上來說,混淆無法「阻止」垃圾郵件,只能「阻礙」(而且是挺沒用的阻礙)

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

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

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

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

© 2021 V2EX