各位大佬可以帮忙翻译一段 20 行的 Python 代码吗?

2019-01-24 23:41:26 +08:00
 axwz88
import re
js='''<script type="text/javascript">.........</script>'''
#去掉<script>标签
js=js[31:-9]
for st in ['window','location',"'assign'","'href'","'replace'"]:
equal=re.findall('[_A-Za-z0-9 =]+%s;'%st,js)#找到变量赋值等式
if equal==[]:#有可能没有
continue
else:
equal=equal[0]
var=equal.split('=')[0].strip()#找出变量名
#把等式干掉
js=js.replace(equal,'')
#把变量替换成它真正的意思
js=js.replace(var,st)
#把['xx'] 替换成 .xx
js=js.replace("['%s']"%st.strip("'"),'.%s'%st.strip("'"))
#将 window.href= 后的内容踢掉,因为当 PyV8 只输出最后一个等式的值
if re.findall('window\.href=.+',js)!=[]:
js=js.replace(re.findall('window\.href=.+',js)[0],'')
#删掉 location.xxx=
js=js.replace('location.href=','').replace('location.replace','').replace('location.assign','')

其中 js='''<script type="text/javascript">.........</script>''' 这里是一段很长的字符串,这个不是重点,太长了就省略了。我在一个大神的博客看到的这段代码,作用是处理一段 js 的混淆脚本,从一段很混乱的 js 代码中找到需要的参数,就这么简单。
最头疼的是我看不懂 python,基础的语法也看不懂,向大家请教一下,有没有帮我翻译一下,非常感谢。
2637 次点击
所在节点    Python
10 条回复
Kagari
2019-01-24 23:45:38 +08:00
想起来以前看过用一行代码实现的 js 贪吃蛇
ps:友情提示,py 是没有;的
Procumbens
2019-01-24 23:45:48 +08:00
#后面的注释已经很详细了 0.0
建议…… 先去了解一下正则表达式和 Python 基础语法
crab
2019-01-24 23:46:05 +08:00
就一个正则啊
yuikns
2019-01-25 06:38:06 +08:00
注释太详细了
还不懂你可以考虑 print 一下变量啊
比如

for st in ['window','location']:
print("st,", st)

re 是 regex,s.replace(old, new[, num]) 表示对 s 替换 old 为 new。若有第三个参数就是最多 num 个
不会 python 少看一集名侦探柯南就会了啊
xfspace
2019-01-25 09:03:00 +08:00
进口重新
js='''<脚本 类型="文本 /爪哇脚本">.........</脚本>'''
js=js[31:-9]
对于 st 在 ['窗口','位置',"'分配'","'href'","'更换'"]:
等于=回覆.找到所有('[_A-Za-z0-9 =]+%s;'%st,js)#找到变量赋值等式
如果 等于==[]:#有可能没有
继续
其他:
等于=等于[0]
变量=等于.分裂('=')[0].跳闸()#找出变量名
#把等式干掉
js=js.更换(等于,'')
#把变量替换成它真正的意思
js=js.更换(变量,st)
#把['xx'] 替换成 .xx
js=js.更换("['%s']"%st.跳闸("'"),'.%s'%st.跳闸("'"))
#将 window.href= 后的内容踢掉,因为当 PyV8 只输出最后一个等式的值
如果 回覆.找到所有('窗口\.href=.+',js)!=[]:
js=js.更换(回覆.找到所有('窗口\.href=.+',js)[0],'')
#删掉 location.xxx=
js=js.更换('位置.=','').更换('位置.更换','').更换('位置.分配','')
xfspace
2019-01-25 09:03:52 +08:00
Powered by Google Translate.
l19981260
2019-01-25 09:18:38 +08:00
只有我想要博客地址么😂
datou
2019-01-25 16:03:31 +08:00
这注释基本把每行代码的作用说清楚了呀
saulshao
2019-01-25 17:57:29 +08:00
这注释基本解释了在干什么。
a226679594
2019-01-26 10:56:04 +08:00
建议…… 先去了解一下正则表达式和 Python 基础语法

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

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

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

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

© 2021 V2EX