Skip to content

Commit 0d675a0

Browse files
committed
新增挑战案例和项目结构更新
1 parent 14a4b55 commit 0d675a0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2681
-123
lines changed
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: 部署GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main # 或者是master,取决于你的主分支名称
7+
8+
jobs:
9+
build-and-deploy:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: 检出代码
13+
uses: actions/checkout@v3
14+
with:
15+
persist-credentials: false # token将用于部署,因此我们不持久化凭证
16+
17+
- name: 设置Node.js环境
18+
uses: actions/setup-node@v3
19+
with:
20+
node-version: '18' # 使用更新的Node.js版本
21+
cache: 'npm'
22+
23+
- name: 安装依赖
24+
run: npm ci
25+
26+
- name: 构建网站
27+
run: npm run build # 在package.json中定义为tsc && vite build
28+
29+
- name: 部署到GitHub Pages
30+
uses: JamesIves/github-pages-deploy-action@v4
31+
with:
32+
branch: gh-pages # 部署到的分支
33+
folder: dist # Vite构建输出目录
34+
clean: true # 清理gh-pages分支上的旧文件
35+
token: ${{ secrets.GITHUB_TOKEN }} # GitHub自动提供的访问令牌
36+
37+
- name: 部署完成通知
38+
run: echo "✅ 网站已成功部署到GitHub Pages!访问地址: https://jsrep.github.io/crawler-leetcode/"

README.md

+55-70
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,85 @@
1-
# 爬虫技术挑战合集
1+
# LeetCode 爬虫挑战
22

3-
![GitHub stars](https://img.shields.io/github/stars/JSREP/crawler-leetcode?style=social)
4-
![GitHub forks](https://img.shields.io/github/forks/JSREP/crawler-leetcode?style=social)
5-
![GitHub issues](https://img.shields.io/github/issues/JSREP/crawler-leetcode)
6-
![GitHub license](https://img.shields.io/github/license/JSREP/crawler-leetcode)
3+
[![部署GitHub Pages](https://github.com/JSREP/crawler-leetcode/actions/workflows/deploy-github-pages.yml/badge.svg)](https://github.com/JSREP/crawler-leetcode/actions/workflows/deploy-github-pages.yml)
74

8-
## 📖 项目简介
5+
这个仓库收集了各种网站的爬虫挑战案例,展示了不同类型的反爬虫技术和解决方案。项目使用React+TypeScript开发,通过GitHub Pages进行部署。
96

10-
爬虫挑战平台是一个致力于帮助开发者掌握网络爬虫技术的开源项目。通过提供各类实际爬虫挑战,从基础数据提取到复杂反爬机制突破,帮助开发者提升数据采集能力。
7+
**在线访问**: [https://jsrep.github.io/crawler-leetcode/](https://jsrep.github.io/crawler-leetcode/)
118

12-
**🔗 访问在线网站: [https://jsrep.github.io/crawler-leetcode/](https://jsrep.github.io/crawler-leetcode/)**
9+
## 项目结构
1310

14-
## ✨ 主要功能
15-
16-
- 🔍 **多样化爬虫挑战**: 从初级到高级的各类爬虫技术难题
17-
- 🏷️ **技术分类**: 按照爬虫技术、目标网站和难度等多维度分类
18-
- 📝 **详细解决方案**: 提供爬虫实现思路、代码示例和反爬绕过技巧
19-
- 🌐 **中英文支持**: 完整的双语界面
20-
- 🤝 **社区贡献**: 支持用户提交新的爬虫挑战
21-
- 📊 **挑战统计**: 直观展示各类挑战的难度分布
22-
23-
## 🚀 快速开始
24-
25-
### 在线使用
11+
```
12+
crawler-leetcode/
13+
├── .github/ # GitHub相关配置
14+
│ └── workflows/ # GitHub Actions工作流配置
15+
├── docs/ # 文档和挑战定义
16+
│ └── challenges/ # 爬虫挑战YAML定义文件
17+
├── public/ # 静态资源
18+
├── src/ # 源代码
19+
│ ├── components/ # React组件
20+
│ ├── pages/ # 页面组件
21+
│ ├── plugins/ # 项目插件
22+
│ ├── utils/ # 工具函数
23+
│ └── App.tsx # 应用入口
24+
├── package.json # 项目依赖
25+
└── vite.config.ts # Vite配置
26+
```
2627

27-
直接访问我们的官方网站:[https://jsrep.github.io/crawler-leetcode/](https://jsrep.github.io/crawler-leetcode/)
28+
## 爬虫挑战
2829

29-
### 本地开发
30+
所有爬虫挑战都定义在 `docs/challenges/` 目录中,使用YAML格式描述挑战的特点、难度和解决方案。详细的贡献指南请参考 [挑战贡献指南](docs/challenges/README.md)
3031

31-
#### 前置条件
32+
目前包含的挑战类型:
3233

33-
- Node.js 18+
34-
- npm 或 yarn
34+
- 验证码挑战(如reCAPTCHA、hCaptcha)
35+
- 浏览器指纹识别
36+
- JavaScript混淆与加密
37+
- API限流与保护
38+
- WebAssembly保护
39+
- 设备指纹和行为分析
3540

36-
#### 安装步骤
41+
## 本地开发
3742

38-
1. 克隆仓库
3943
```bash
44+
# 克隆项目
4045
git clone https://github.com/JSREP/crawler-leetcode.git
4146
cd crawler-leetcode
42-
```
4347

44-
2. 安装依赖
45-
```bash
48+
# 安装依赖
4649
npm install
47-
#
48-
yarn install
49-
```
5050

51-
3. 启动开发服务器
52-
```bash
51+
# 启动开发服务器
5352
npm run dev
54-
#
55-
yarn dev
56-
```
5753

58-
4. 构建生产版本
59-
```bash
54+
# 构建项目
6055
npm run build
61-
#
62-
yarn build
63-
```
64-
65-
## 📋 项目使命
6656

67-
我们的使命是提供结构化的网络爬虫技术和反爬机制突破学习资源,帮助开发者提高数据采集能力。通过实际挑战,让开发者能够:
68-
69-
- 学习并掌握各种爬虫技术
70-
- 理解常见的反爬机制及其突破方法
71-
- 提升解决复杂网络数据采集问题的能力
72-
73-
## 🛠 技术栈
74-
75-
- **前端框架**: React + TypeScript
76-
- **UI组件库**: Ant Design
77-
- **状态管理**: React Hooks
78-
- **数据获取**: REST API + Axios
57+
# 预览构建结果
58+
npm run preview
59+
```
7960

80-
## 📋 贡献指南
61+
## 自动部署
8162

82-
我们欢迎社区成员为项目做出贡献!您可以通过以下方式参与
63+
本项目配置了GitHub Actions自动部署流程,当代码推送到主分支时,会自动构建并部署到GitHub Pages
8364

84-
1. **提交爬虫挑战**: 通过平台的贡献功能,提交新的爬虫技术挑战
85-
2. **报告Bug**: 在GitHub Issues中提交问题报告
86-
3. **功能建议**: 提出新功能或改进意见
87-
4. **代码贡献**: Fork仓库,提交Pull Request
65+
1. 检出代码
66+
2. 设置Node.js环境
67+
3. 安装依赖
68+
4. 构建项目
69+
5. 部署到gh-pages分支
8870

89-
## 📄 许可证
71+
你可以在 `.github/workflows/deploy-github-pages.yml` 文件中查看完整的工作流配置。
9072

91-
本项目采用 [MIT 许可证](./LICENSE)
73+
## 贡献指南
9274

93-
## 📧 联系我们
75+
1. Fork本仓库
76+
2. 创建新分支 (`git checkout -b feature/new-challenge`)
77+
3. 提交更改 (`git commit -m 'Add new challenge: XXX'`)
78+
4. 推送到分支 (`git push origin feature/new-challenge`)
79+
5. 创建Pull Request
9480

95-
- **邮箱**: [email protected]
96-
- **GitHub**: [JSREP/crawler-leetcode](https://github.com/JSREP/crawler-leetcode)
81+
欢迎贡献新的爬虫挑战案例、改进文档或代码!
9782

98-
---
83+
## 许可证
9984

100-
如有任何问题或建议,欢迎通过 [GitHub Issues](https://github.com/JSREP/crawler-leetcode/issues) 联系我们。
85+
MIT

docs/challenges/360网站卫士.yml

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# 爬虫挑战合集元数据配置文件
2+
# 用于在数据结构变更时进行版本兼容性校验,必须为整数
3+
# 当数据结构发生不兼容变更时需递增版本号
4+
version: 1
5+
6+
# 爬虫挑战合集定义
7+
challenges:
8+
# 单个爬虫挑战定义,每个挑战都有一个唯一的id标识,id是必须的,ID必须是一个整数,并且全局唯一
9+
- id: 12
10+
# 可以给ID设置一个别名,用于在列表中显示,ID别名也可以用于访问详情页
11+
id-alias: waf-360
12+
# 挑战标签系统(数组格式,选填)
13+
# 用于分类和筛选,支持多个标签
14+
tags:
15+
- waf
16+
- signature-detection
17+
18+
# 挑战目标网站类型(枚举值,必填)
19+
# 允许值: Web / Android / iOS
20+
platform: Web
21+
22+
# 挑战名称(必填)
23+
# 作为列表和详情页的标题,建议控制在30个字符以内
24+
name: 360网站卫士
25+
26+
# 挑战英文名称(选填)
27+
# 当用户选择英文语言时显示,不提供时将使用中文名称
28+
name_en: 360 Website Guard
29+
30+
# 挑战难度评级(整数类型,必填)
31+
# 取值范围: 1-5,1表示最简单,5表示最难
32+
# 前端展示时会转换为星级显示
33+
difficulty-level: 3
34+
35+
# Markdown格式详细描述(必选)
36+
# 当需要复杂排版时使用
37+
# 与description-markdown-path字段二选一使用,必须选其中一种方式提供描述
38+
description-markdown: |
39+
360推出的Web应用防火墙,包含爬虫防护模块。
40+
41+
特点:基于特征签名的爬虫检测,防护DDoS与CC攻击。
42+
43+
破解难点:需要绕过请求特征检测,模拟正常用户访问模式。
44+
45+
# 挑战目标网站URL的base64编码
46+
base64-url: aHR0cHM6Ly9mdWx1LmMzNjAuY24v
47+
48+
# 链接有效性状态(布尔值)
49+
# 标记挑战链接是否失效,true表示已失效
50+
# 失效挑战会在前端显示警告标志
51+
is-expired: false
52+
53+
# 创建时间(ISO 8601格式)
54+
# 记录挑战首次添加时间,格式: YYYY-MM-DD HH:mm:ss
55+
# 时区默认为UTC+8
56+
create-time: 2025-03-01 00:00:11
57+
58+
# 最后更新时间(ISO 8601格式)
59+
# 记录挑战最后修改时间,格式与create-time相同
60+
# 当任何字段变更时需同步更新此时间
61+
update-time: 2025-03-01 00:00:11
+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# 爬虫挑战合集元数据配置文件
2+
# 用于在数据结构变更时进行版本兼容性校验,必须为整数
3+
# 当数据结构发生不兼容变更时需递增版本号
4+
version: 1
5+
6+
# 爬虫挑战合集定义
7+
challenges:
8+
# 单个爬虫挑战定义,每个挑战都有一个唯一的id标识,id是必须的,ID必须是一个整数,并且全局唯一
9+
- id: 19
10+
# 可以给ID设置一个别名,用于在列表中显示,ID别名也可以用于访问详情页
11+
id-alias: aws-bot
12+
# 挑战标签系统(数组格式,选填)
13+
# 用于分类和筛选,支持多个标签
14+
tags:
15+
- managed-rules
16+
- rate-based-rules
17+
18+
# 挑战目标网站类型(枚举值,必填)
19+
# 允许值: Web / Android / iOS
20+
platform: Web
21+
22+
# 挑战名称(必填)
23+
# 作为列表和详情页的标题,建议控制在30个字符以内
24+
name: AWS WAF Bot Control
25+
26+
# 挑战英文名称(选填)
27+
# 当用户选择英文语言时显示,不提供时将使用中文名称
28+
name_en: AWS WAF Bot Control
29+
30+
# 挑战难度评级(整数类型,必填)
31+
# 取值范围: 1-5,1表示最简单,5表示最难
32+
# 前端展示时会转换为星级显示
33+
difficulty-level: 3
34+
35+
# Markdown格式详细描述(必选)
36+
# 当需要复杂排版时使用
37+
# 与description-markdown-path字段二选一使用,必须选其中一种方式提供描述
38+
description-markdown: |
39+
AWS托管的爬虫控制规则集,支持基于请求特征的检测。
40+
41+
特点:利用预配置的托管规则和基于速率的规则,灵活配置爬虫防护策略。
42+
43+
破解难点:需要绕过复杂的规则组合,处理基于速率的限制。
44+
45+
# 挑战目标网站URL的base64编码
46+
base64-url: aHR0cHM6Ly9hd3MuYW1hem9uLmNvbS8=
47+
48+
# 链接有效性状态(布尔值)
49+
# 标记挑战链接是否失效,true表示已失效
50+
# 失效挑战会在前端显示警告标志
51+
is-expired: false
52+
53+
# 创建时间(ISO 8601格式)
54+
# 记录挑战首次添加时间,格式: YYYY-MM-DD HH:mm:ss
55+
# 时区默认为UTC+8
56+
create-time: 2025-03-01 00:00:18
57+
58+
# 最后更新时间(ISO 8601格式)
59+
# 记录挑战最后修改时间,格式与create-time相同
60+
# 当任何字段变更时需同步更新此时间
61+
update-time: 2025-03-01 00:00:18
+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# 爬虫挑战合集元数据配置文件
2+
# 用于在数据结构变更时进行版本兼容性校验,必须为整数
3+
# 当数据结构发生不兼容变更时需递增版本号
4+
version: 1
5+
6+
# 爬虫挑战合集定义
7+
challenges:
8+
# 单个爬虫挑战定义,每个挑战都有一个唯一的id标识,id是必须的,ID必须是一个整数,并且全局唯一
9+
- id: 5
10+
# 可以给ID设置一个别名,用于在列表中显示,ID别名也可以用于访问详情页
11+
id-alias: akamai-bot
12+
# 挑战标签系统(数组格式,选填)
13+
# 用于分类和筛选,支持多个标签
14+
tags:
15+
- ai-detection
16+
- behavior-analysis
17+
18+
# 挑战目标网站类型(枚举值,必填)
19+
# 允许值: Web / Android / iOS
20+
platform: Web
21+
22+
# 挑战名称(必填)
23+
# 作为列表和详情页的标题,建议控制在30个字符以内
24+
name: Akamai Bot Manager
25+
26+
# 挑战英文名称(选填)
27+
# 当用户选择英文语言时显示,不提供时将使用中文名称
28+
name_en: Akamai Bot Manager
29+
30+
# 挑战难度评级(整数类型,必填)
31+
# 取值范围: 1-5,1表示最简单,5表示最难
32+
# 前端展示时会转换为星级显示
33+
difficulty-level: 4
34+
35+
# Markdown格式详细描述(必选)
36+
# 当需要复杂排版时使用
37+
# 与description-markdown-path字段二选一使用,必须选其中一种方式提供描述
38+
description-markdown: |
39+
Akamai的AI驱动爬虫检测系统,可识别自动化工具的行为模式。
40+
41+
特点:利用机器学习分析用户行为,识别异常访问模式。
42+
43+
破解难点:需要模拟真实用户的浏览行为和交互方式,突破AI行为分析。
44+
45+
# 挑战目标网站URL的base64编码
46+
base64-url: aHR0cHM6Ly93d3cuYWthbWFpLmNvbS8=
47+
48+
# 链接有效性状态(布尔值)
49+
# 标记挑战链接是否失效,true表示已失效
50+
# 失效挑战会在前端显示警告标志
51+
is-expired: false
52+
53+
# 创建时间(ISO 8601格式)
54+
# 记录挑战首次添加时间,格式: YYYY-MM-DD HH:mm:ss
55+
# 时区默认为UTC+8
56+
create-time: 2025-03-01 00:00:04
57+
58+
# 最后更新时间(ISO 8601格式)
59+
# 记录挑战最后修改时间,格式与create-time相同
60+
# 当任何字段变更时需同步更新此时间
61+
update-time: 2025-03-01 00:00:04

0 commit comments

Comments
 (0)