V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
axwz88
V2EX  ›  Python

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

  •  
  •   axwz88 · 2019-01-24 23:41:26 +08:00 · 2711 次点击
    这是一个创建于 2120 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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,基础的语法也看不懂,向大家请教一下,有没有帮我翻译一下,非常感谢。
    10 条回复    2019-01-26 10:56:04 +08:00
    Kagari
        1
    Kagari  
       2019-01-24 23:45:38 +08:00
    想起来以前看过用一行代码实现的 js 贪吃蛇
    ps:友情提示,py 是没有;的
    Procumbens
        2
    Procumbens  
       2019-01-24 23:45:48 +08:00
    #后面的注释已经很详细了 0.0
    建议…… 先去了解一下正则表达式和 Python 基础语法
    crab
        3
    crab  
       2019-01-24 23:46:05 +08:00
    就一个正则啊
    yuikns
        4
    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
        5
    xfspace  
       2019-01-25 09:03:00 +08:00 via Android
    进口重新
    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
        6
    xfspace  
       2019-01-25 09:03:52 +08:00 via Android
    Powered by Google Translate.
    l19981260
        7
    l19981260  
       2019-01-25 09:18:38 +08:00
    只有我想要博客地址么😂
    datou
        8
    datou  
       2019-01-25 16:03:31 +08:00   ❤️ 1
    这注释基本把每行代码的作用说清楚了呀
    saulshao
        9
    saulshao  
       2019-01-25 17:57:29 +08:00
    这注释基本解释了在干什么。
    a226679594
        10
    a226679594  
       2019-01-26 10:56:04 +08:00
    建议…… 先去了解一下正则表达式和 Python 基础语法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5704 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:30 · PVG 11:30 · LAX 19:30 · JFK 22:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.