Files
getDomain/domainCheck/README_acw_sc__v2.md
2026-04-16 13:33:06 +08:00

192 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# acw_sc__v2 生成器
从混淆的HTML代码中提取的 `acw_sc__v2` cookie 生成函数。
## 文件说明
### JavaScript版本
- **acw_sc__v2_generator.js** - JavaScript版本的生成函数可直接在浏览器控制台中使用
### Python版本
- **acw_sc__v2_fixed.py** - 简化版Python生成器适合快速使用
- **acw_sc__v2_complete.py** - 完整版Python生成器包含更多功能和错误处理
- **acw_sc__v2_simple.py** - 最简化版本,直接使用硬编码密钥
## 使用方法
### JavaScript版本
在浏览器控制台中执行:
```javascript
// 加载acw_sc__v2_generator.js文件后
var arg1 = '1EEB3321F0286855D50CD9E96C1CDF3D4A913DB0';
var acwScV2 = generateAcwScV2(arg1);
console.log('acw_sc__v2的值:', acwScV2);
// 设置cookie可选
setAcwScV2Cookie(acwScV2);
```
### Python版本
#### 简化版acw_sc__v2_fixed.py
```python
from acw_sc__v2_fixed import generate_acw_sc_v2
arg1 = '1EEB3321F0286855D50CD9E96C1CDF3D4A913DB0'
acw_sc_v2 = generate_acw_sc_v2(arg1)
print(f'acw_sc__v2的值: {acw_sc_v2}')
```
#### 完整版acw_sc__v2_complete.py
```python
from acw_sc__v2_complete import AcwScV2Generator, generate_acw_sc_v2
# 方法1使用便捷函数
arg1 = '1EEB3321F0286855D50CD9E96C1CDF3D4A913DB0'
result = generate_acw_sc_v2(arg1)
print(f'acw_sc__v2的值: {result}')
# 方法2使用生成器类
generator = AcwScV2Generator()
result = generator.generate(arg1)
print(f'acw_sc__v2的值: {result}')
# 方法3批量生成
test_args = [
'1EEB3321F0286855D50CD9E96C1CDF3D4A913DB0',
'A13D8B4174A10C57667C1CD92E54D01F449CA76E',
'F0286855D50CD9E96C1CDF3D4A913DB01EEB3321'
]
batch_results = generator.generate_batch(test_args)
for arg, res in batch_results.items():
print(f'{arg} -> {res}')
# 方法4使用自定义密钥
custom_key = 'YXBwbHk=' # Base64编码的密钥
generator.set_key(custom_key)
result = generator.generate(arg1)
print(f'使用自定义密钥的acw_sc__v2值: {result}')
```
## 核心算法
### 1. 字符重排
根据索引映射数组 `m` 重新排列输入字符串 `arg1`
```python
m = [0xf, 0x23, 0x1d, 0x18, 0x21, 0x10, 0x1, 0x26, 0xa, 0x9, 0x13, 0x1f, 0x28, 0x1b, 0x16, 0x17, 0x19, 0xd, 0x6, 0xb, 0x27, 0x12, 0x14, 0x8, 0xe, 0x15, 0x20, 0x1a, 0x2, 0x1e, 0x7, 0x4, 0x11, 0x5, 0x3, 0x1c, 0x22, 0x25, 0xc, 0x24]
```
### 2. 密钥解码
将Base64编码的密钥解码为十六进制字符串
```python
key_encoded = 'Aw5PDg9JAw4='
key_hex = base64.b64decode(key_encoded).hex()
# 结果: '030e4f0e0f49030e'
```
### 3. 异或运算
将重排后的字符串与解码后的密钥进行按位异或:
```python
for x in range(0, min(len(u), len(p)), 2):
u_sub = u[x:x+2]
p_sub = p[x:x+2]
a = format(int(u_sub, 16) ^ int(p_sub, 16), '02x')
v += a
```
## 输入输出示例
### 输入
```python
arg1 = '1EEB3321F0286855D50CD9E96C1CDF3D4A913DB0'
```
### 输出
```python
acw_sc__v2 = '5ad70a13004a0290'
```
## 注意事项
1. **输入长度**`arg1` 必须是40位的十六进制字符串
2. **输入格式**`arg1` 必须是有效的十六进制字符串
3. **密钥**:默认使用内置密钥,也可以自定义密钥
4. **输出格式**:输出为十六进制字符串
## 错误处理
完整版生成器包含以下错误处理:
- 输入长度验证
- 输入格式验证
- Base64解码错误处理
- 异常捕获和错误信息输出
## 应用场景
- 网站爬虫绕过阿里云CDN的反爬虫保护
- 安全测试:测试网站的反爬虫机制
- 学习研究了解混淆JavaScript代码的逆向工程
## 技术细节
### 混淆技术
原始HTML代码使用了多种混淆技术
1. **字符串编码**Base64编码 + URL编码
2. **变量名混淆**:使用无意义的变量名
3. **控制流混淆**:使用闭包和条件函数
4. **反调试**:通过数学计算和正则表达式检测调试器
### 逆向工程
通过分析原始代码,提取出核心算法:
1. 移除反调试逻辑
2. 简化字符串解码
3. 提取核心计算逻辑
4. 重构为可读代码
## 性能优化
- 使用缓存机制避免重复解码
- 批量生成功能提高效率
- 简化算法减少计算量
## 安全提示
本工具仅供学习和研究使用,请勿用于非法用途。使用本工具绕过网站的反爬虫保护可能违反网站的使用条款。
## 许可证
本代码仅供学习和研究使用。
## 联系方式
如有问题或建议,请通过以下方式联系:
- 提交Issue
- 发送Pull Request
- 联系作者
## 更新日志
### v1.0.0 (2024-01-01)
- 初始版本发布
- 支持JavaScript和Python版本
- 包含完整的使用示例
## 致谢
感谢所有为逆向工程和反爬虫技术研究做出贡献的开发者。