上次有同学问我:
email混淆加密,渲染出来能看到,但是代码请求时候拿不到真正的值。
解决方案分享一下给大家:
仔细看网站html代码我们会发现一串链接:
如下:
<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5c36283036382b1c6d6a6f723f3331">[email protected]</a>
里面有用的信息就是这一串字符
5c36283036382b1c6d6a6f723f3331
上面这一串字符就是对email的混淆:
拿到js代码,对其进行解密,提取有用的js代码。
我们只需要把那一串很长的字符传进去
,就会解密出真正的email地址
import execjs
def email_jimi(email_data):
#邮箱解密
j = '''
function e(e) {
try {
if ("undefined" == typeof console)
return;
"error"in console ? console.error(e) : console.log(e)
} catch (e) {}
}
function t(e) {
return e.replace(/"/g, """)
}
function r(e, t) {
var r = e.substr(t, 2);
return parseInt(r, 16)
}
function n(n, o) {
for (var c = "", a = r(n, o), i = o + 2; i < n.length; i += 2) {
var f = r(n, i) ^ a;
c += String.fromCharCode(f)
}
try {
c = decodeURIComponent(escape(c))
} catch (l) {
e(l)
}
return t(c)
}
'''
p =execjs.compile(j)
return p.call('n',email_data,0)
if __name__=='__main__':
email_data='5c36283036382b1c6d6a6f723f3331'
email = email_jimi(email_data)
print(email)
执行结果:
jtljdw@163.com
此问题的解决主要在js加密上,去研究一下js加密就行。
可能你遇到的和这个不一样,不过思路都一样。
去看一下js,就可以解决加密问题。