学姐把我拉进小树林,奇怪的知识增加了

博主分享JS逆向爬虫文章,挑取JS文件中参数加密代码,逐句分析其加密方式,并使用Python实现。介绍了md5加密,包括其概念及三种简单加密方式,还提及结合三种加密一起使用,指出了解这些加密对爬虫有很大帮助。
部署运行你感兴趣的模型镜像

JS逆向咸鱼级别,翻身跃龙门!

  • 懂点技术,谈点感悟;大家好,我叫夜斗,请多指教!

  • 最近刚好看到一篇关于js逆向的爬虫文章,然后就想着分享给大家,对我的帮助真挺大的,谢谢这位博主啦! https://blog.youkuaiyun.com/weixin_37254196/article/details/112361386

  • 然后我自己就挑了js文件一段代码细说啦,看下面看下面!

  • 这是一段js代码文件里面的一段参数加密代码

var r = function(e) {
        var t = n.md5(navigator.appVersion)
          , r = "" + (new Date).getTime()
          , i = r + parseInt(10 * Math.random(), 10);
        return {
            ts: r,
            bv: t,
            salt: i,
            sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@")
        }
    };
  • 让我们一句句来看看到底这段代码是怎么加密的,然后用自己熟悉的语言写出相应的加密代码,因为我自己比较熟悉python,就拿python来写啦!
  1. var t = n.md5(navigator.appVersion)(md5加密浏览器版本信息然后赋值给参数t)

没有js基础的同学这边集合一下:
navigator: 表示浏览器的信息
appVersion属性:浏览器版本

那这个md5是个啥意思呢? 没听说过的小伙伴们可以看下下面:

md5是一种密码散列函数,能够产生128位的散列值,简单说就是字符加密操作;而且由于md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密,推荐一个md5在线解密接口https://www.cmd5.com/

md5加密的三种简单方式

import hashlib

# md5对英文数字加密的三种方式

name = '夜斗小神社'

# 第一种
secret_name_1 = hashlib.md5()
secret_name_1.update(name.encode('utf-8'))  # 编码
print(f'secret_name_1: {secret_name_1.hexdigest()}')  # 返回摘要,作为十六进制数据字符串值

# 第二种
secret_name_2 = hashlib.md5(name.encode("utf-8")).hexdigest()
print(f'secret_name_2: {secret_name_2} ')

# 第三种
secret_name_3 = hashlib.new('md5', name.encode('utf-8')).hexdigest()
print(f'secret_name__3: {secret_name_3}')

'''
结果如下: 
C:\ProgramData\Anaconda3\python.exe "L:/python package/python爬虫/js逆向/md5加密.py"
secret_name_1: cedf3c63cb14220e633df6d01ac0bd28
secret_name_2: cedf3c63cb14220e633df6d01ac0bd28 
secret_name__3: cedf3c63cb14220e633df6d01ac0bd28

Process finished with exit code 0

'''
  1. r = "" + (new Date).getTime() : 参数r接受一个返回的是13位数字毫秒数,相应的python代码如下:
# 获取一个13位的时间戳,因为需要拼接字符所以用str转换一下
r = "" + str(int(time.time() * 1000))
  1. i = r + parseInt(10 * Math.random(), 10): parseInt强制取整,把小数部分去掉只去整数部分,所以就变成了产生0~9之间的整数赋给i,相应的python代码如下:
# 获得0-9的随机整数,因为需要拼接字符所以用str转换一下
i = r + str(int(random.randint(0, 9)))
  1. sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@"):这个比较复杂,先是将括号里面的参数拼接起来然后再进行md5加密,具体python代码如下:
# e: 是函数传入的字符参数
# i: 0-9的随机整数
join_character =  "fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@"
# 然后进行对join_character进行md5,随便选上述三种中一种加密
sign =  hashlib.md5() 
sign.update(join_character.encode('utf-8'))
sign_result = sign.hexdigest()
  • 上述就是三种简单的参数加密啦,了解这几种加密对爬虫有很大帮助!

最后结合上述三种加密一起使用

  • 代码如下:
import hashlib
import time
import random


def secret_fuc(e):
    # 获取一个13位的时间戳,因为需要拼接字符所以用str转换一下
    r = "" + str(int(time.time() * 1000))
    # 获得0-9的随机整数,因为需要拼接字符所以用str转换一下
    i = r + str(int(random.randint(0, 9)))
    # e: 是函数传入的字符参数
    # i: 0-9的随机整数
    join_character = "fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@"
    # 然后进行对join_character进行md5,随便选上述三种中一种加密
    sign = hashlib.md5()
    sign.update(join_character.encode('utf-8'))
    sign_result = sign.hexdigest()
    return r, i, sign_result


name = "夜斗小神社"
t, salt, sign = secret_fuc(name)
print(f't: {t}')
print(f'salt: {salt}')
print(f'sign: {sign}')

'''
结果如下: 
C:\ProgramData\Anaconda3\python.exe "L:/python package/python爬虫/js逆向/三种加密实战.py"
t: 1610363742211
salt: 16103637422115
sign: 458b3ec27ae42f9ff505546a658eec72

Process finished with exit code 0

'''
  • 好啦!可能最近得去复习金融学啦,爬虫路上估计得停一会儿啦,喜欢的小伙伴不妨点个赞呗!
  • 在这个星球上,你很重要,请珍惜你的珍贵! ~~~夜斗小神社

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>好的,用户需要将Node.js从版本20降级到14,以适配学姐的项目。首先,我得回想一下之前用户提供的引用内容,看看有没有相关的指导步骤。 引用[1]提到使用nvm来管理Node.js版本,并且指出如果遇到安装问题,可能是因为旧版本没删除干净。用户之前可能已经安装了Node.js 20,所以需要先彻底卸载它,否则nvm可能无法正确识别或安装其他版本。根据引用[4],用户需要找到node.exe的路径并删除所有相关内容,这可能包括手动删除残留文件。 接下来,安装nvm是关键步骤。引用[3]和[4]都提到了安装nvm的步骤,用户需要从GitHub下载安装包。安装完成后,可能需要重启命令行工具,以确保nvm命令可用。 然后,使用nvm安装Node.js 14。引用[3]中的命令是nvm install v18.16.0,所以对应的应该是nvm install 14.0.0或者具体的小版本号。安装完成后,使用nvm use 14.0.0来切换版本。但要注意,可能需要以管理员权限运行命令行,否则切换可能失败,如引用[2]提到的权限问题。 用户可能会遇到的问题包括安装时的网络错误,比如无法下载Node.js 14,这时候可能需要检查网络或使用代理。另外,引用[1]提到如果出现无法识别安装的情况,可能需要重新检查Node.js是否卸载干净,并重新安装nvm。 还有,用户可能需要确认是否成功卸载了旧版本,否则nvm可能无法正确管理。引用[4]中的where node命令可以帮助查找残留的node.exe,确保删除所有相关文件。 最后,验证安装是否成功,使用node -v和npm -v查看版本是否正确。如果切换版本后不生效,可能需要关闭终端重新打开,或者检查是否有全局安装的包影响版本。 总结步骤应该是:卸载当前Node.js,安装nvm,使用nvm安装14版本,切换版本,验证。同时提醒用户注意权限和残留文件的问题,以及如何解决常见错误。</think>以下是将Node.js从版本20降级到版本14的完整操作流程: ### 一、彻底卸载当前Node.js 1. 通过控制面板卸载Node.js程序 2. 执行`where node`命令查找残留文件,删除所有node相关目录[^4] 3. 删除以下目录(若存在): - `C:\Program Files\nodejs` - `%AppData%\npm` - `%AppData%\nvm` ### 二、安装nvm版本管理工具 1. 访问[GitHub releases](https://github.com/coreybutler/nvm-windows/releases)下载最新nvm安装包 2. 安装时注意: - 选择与原Node.js不同的安装路径(推荐`C:\nvm`) - 配置环境变量时选择自动设置[^4] ### 三、安装Node.js 14 ```powershell # 管理员权限执行 nvm install 14.21.1 # 安装指定版本 nvm use 14.21.1 # 切换版本 nvm on # 启用版本管理 ``` ### 四、验证安装 ```powershell node -v # 应显示v14.21.1 npm -v # 显示对应npm版本 ``` ### 常见问题解决方案 1. **权限问题**:所有命令需在管理员模式下的PowerShell执行[^2] 2. **切换失败**:重启终端或执行`nvm on`刷新环境变量 3. **残留冲突**:使用`where node`检查是否还有全局安装的node程序[^4]
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值