我需要将以下函数转换为python,以便在抓取网页时对提取的文本进行消隐:
function obfuscateText(coded, key) {
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/
shift = coded.length
link = ""
for (i = 0; i < coded.length; i++) {
if (key.indexOf(coded.charAt(i)) == -1) {
ltr = coded.charAt(i)
link += (ltr)
}
else {
ltr = (key.indexOf(coded.charAt(i)) - shift + key.length) % key.length
link += (key.charAt(ltr))
}
}
document.write("<a href='mailto:" + link + "'>" + link + "</a>")
}“”“”
下面是我转换的python等价物:
^{pr2}$打印模糊文本(“uw#287u#Guw#287Xw8Iwu!#W7L#“,”WXYVZABUCDTFGSHIRKLQMNOPQORSTNUVMWXYLZ01K23J456I789H。@G!#$F%&E'*+D-/=C?^B `{A |}~”)
actionattraction$comcastWnet
但是我得到的输出有点不正确,而不是actionattraction@comcast.net我在上面。同样,上面的代码多次为同一个html页面提供随机字符
目标html页面在JS中有一个带编码和key的模糊文本函数,我在obsfunc中提取函数签名并动态执行:
email=eval(obsfunc)
它将email存储在上面的变量中,但问题是它大部分时间都能工作,但有时会失败,我强烈地感觉到问题出在python函数提供的参数上,它们可能需要转义或转换,因为它包含特殊字符?我尝试传递原始参数和不同的类型,如repr(),但问题仍然存在。在
一些例子actionattraction@comcast.net使用相同的python函数计算错误和正确(第一行是email):
@ation@ttr@ationVaoma@st!nct
obfuscateText("KMd%Y@Kdd8KMd%Y@IMY!MKcdJ@*d", "utvsrwqxpyonzm0l1k2ji3h4g5fe6d7c8b9aZ.Y@X!WV#U$T%S&RQ'P*O+NM-L/K=J?IH^G_F`ED{C|B}A~")
}ction}ttr}ction@comc}st.net
obfuscateText("}ARGML}RRP}ARGMLjAMKA}QRiLCR", "}|{`_^?=/-+*'&%$#!@.9876543210zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA~")
actionattraction@comcast.net
obfuscateText("DEWLRQDWWUDEWLRQoERPEDVWnQHW", "%&$#!@.'9876*54321+0zyxw-vutsr/qponm=lkjih?gfed^cbaZY_XWVUT`SRQPO{NMLKJ|IHGFE}DCBA~")
我重写了除臭剂:
测试结果是
^{pr2}$这给了
注意,这三个键串都包含
&
;用&
替换它可以解决问题。可能在某个时候,javascript被错误地转义了html代码;Python有一个模块可以对html特殊字符进行解锁,如下所示:首先,
index
不返回None
,而是抛出一个异常。在您的例子中,W出现而不是一个点,因为返回的索引是0
,not inkey
(这也是错误的)错误地认为键中不存在字符。在其次,
&
的出现表明您确实需要查找和解码HTML实体。在最后,我建议重写它
相关问题 更多 >
编程相关推荐