#600 by GitHub stars

eatmoreduck/boss-zhipin-scraper

Scrape BOSS直聘 (job listing site) via Chrome CDP. Searches jobs by keyword/city/filters, fetches JD details, outputs structured JSON/CSV with plaintext salary, and can summarize scraped results into a job-market prompt. Optional --company locally filters results by company name (boss_name substring)

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +3 / −3 lines

Before Network or broad shell → After Network or broad shell

1f8df7b76ac1 → 7913419b6b53

- 4 version: 2.3.1
+ 4 version: 2.4.0
- 164 | `--pages` | 3 | 抓取页数(上限 10,每页 30 条) |
+ 164 | `--pages` | 3 | 抓取页数(上限 20,每页 15 条) |
- 270 - 单次最多 10 页(300 条),防封号
+ 270 - 单次最多 20 页(300 条),防封号

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 1f8df7b76ac1

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 7913419b6b53e45ee621da7dab066a350ef7b060

git clone --filter=blob:none --no-checkout https://github.com/eatmoreduck/boss-zhipin-scraper.git .hotskills/eatmoreduck-boss-zhipin-scraper && git -C .hotskills/eatmoreduck-boss-zhipin-scraper checkout --detach 7913419b6b53e45ee621da7dab066a350ef7b060 # Copy each selected skill directory from .hotskills/eatmoreduck-boss-zhipin-scraper into .agents/skills/<skill-name>/
1.7kGitHub stars
35stars in 7 days
1skill in this repository
11commits in 30 days

Heat

5.2
  • Star growth, last 7 daysAhead of 91% of tracked repositories
  • Star growth, last 24 hoursAhead of 3% of tracked repositories
  • Rank movement, last 7 daysAhead of 42% of tracked repositories
  • Commits, last 30 daysAhead of 78% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 7, 20261,720

Individual skills in this repository

How it works

boss-zhipin-scraper

When your agent uses it

Scrape BOSS直聘 (job listing site) via Chrome CDP. Searches jobs by keyword/city/filters, fetches JD details, outputs structured JSON/CSV with plaintext salary, and can summarize scraped results into a job-market prompt. Optional --company locally filters results by company name (boss_name substring) with no extra request. Use when user wants to search/analyze jobs on BOSS直聘 or zhipin.com.

What it loads into context

Frontmatter

160 tokens

Always available to the agent

SKILL.md

4,625 tokens

When the skill is activated

Reference documents

21,231 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 前置条件
  2. 脚本位置
  3. 依赖安装(首次使用必须执行)
  4. 自动化流程
  5. 参数速查
  6. 输出格式
  7. 工作原理
  8. 数据安全策略
  9. 常见问题
  10. 注意事项
  11. 安装本 Skill

Scripts executed separately

  • scripts/boss_cdp_raw.py
  • scripts/job_summary.py
  • scripts/package-skill.sh
  • tests/test_chrome_setup.py
  • tests/test_job_summary.py

Files

  • .github/ISSUE_TEMPLATE/bug_report.ymlasset1,968 bytes
  • .github/ISSUE_TEMPLATE/feature_request.ymlasset1,321 bytes
  • .github/ISSUE_TEMPLATE/question.ymlasset1,177 bytes
  • .github/workflows/ci.ymlasset1,748 bytes
  • .github/workflows/make-release.ymlasset3,783 bytes
  • .github/workflows/pullfrog.ymlasset3,444 bytes
  • .github/workflows/release.ymlasset6,125 bytes
  • .gitignoreasset678 bytes
  • AGENTS.mddoc8,547 bytes
  • CHANGELOG.mddoc16,344 bytes
  • CONTRIBUTING.mddoc4,663 bytes
  • LICENSEasset1,068 bytes
  • README.en.mddoc25,270 bytes
  • README.mddoc23,051 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • SKILL.mdcore15,513 bytes
  • assets/reward-qr.pngasset293,744 bytes
  • cover.pngasset1,863,502 bytes
  • data/city_codes.jsonasset10,280 bytes
  • pyproject.tomlasset1,071 bytes
  • requirements.txtdoc55 bytes
  • scripts/boss_cdp_raw.pyruns125,746 bytes
  • scripts/job_summary.pyruns16,708 bytes
  • scripts/package-skill.shruns3,968 bytes
  • tests/test_chrome_setup.pyruns111,461 bytes
  • tests/test_job_summary.pyruns19,207 bytes
  • uv.lockasset37,275 bytes
Read SKILL.md

# BOSS直聘职位抓取工具 v2.3

通过 Chrome CDP 协议抓取 BOSS直聘 (zhipin.com) 职位数据,输出结构化 JSON/CSV(含明文薪资),并可对已抓取结果生成聚合摘要和求职材料优化提示词。

## 前置条件

- Chrome 浏览器已安装
- Python 3.10+
- 用户已登录 zhipin.com(或愿意手动登录)

## 脚本位置

本 skill 的脚本在 skill 目录下:
View the complete source on GitHub

Skills included

  • boss-zhipin-scraper

Repository facts

License
MIT
Created
Jun 11, 2026
Last pushed
Nov 3, 2026
Forks
226
Open issues
11
Project activity
Active

Rank over the last 12 weeks

Now #600 · best #500 · down 54 in 30 days

  1. #594 from Nov 1 to Nov 2
  2. #599 on Nov 3
  3. #598 on Nov 4
  4. #597 on Nov 5
  5. #598 on Nov 6
  6. #600 since Nov 7
77 earlier periods
  1. #540 on Aug 2
  2. #514 on Aug 8
  3. #521 on Aug 9
  4. #535 on Aug 10
  5. #536 on Aug 11
  6. #533 on Aug 12
  7. #535 on Aug 13
  8. #533 on Aug 14
  9. #517 on Aug 15
  10. #526 on Aug 16
  11. #523 on Aug 17
  12. #539 on Aug 18
  13. #528 on Aug 19
  14. #519 from Aug 20 to Aug 21
  15. #500 on Aug 22
  16. #519 on Aug 23
  17. #522 on Aug 24
  18. #530 on Aug 25
  19. #520 on Aug 26
  20. #530 on Aug 27
  21. #527 on Aug 28
  22. #510 on Aug 29
  23. #501 on Aug 30
  24. #524 from Aug 31 to Sep 1
  25. #518 on Sep 2
  26. #524 on Sep 3
  27. #507 on Sep 4
  28. #501 on Sep 5
  29. #515 on Sep 6
  30. #513 on Sep 7
  31. #533 on Sep 8
  32. #518 on Sep 9
  33. #524 on Sep 10
  34. #519 on Sep 11
  35. #511 on Sep 12
  36. #507 on Sep 13
  37. #521 on Sep 14
  38. #514 on Sep 15
  39. #525 on Sep 16
  40. #520 on Sep 17
  41. #522 on Sep 18
  42. #505 on Sep 19
  43. #517 on Sep 20
  44. #516 on Sep 21
  45. #523 on Sep 22
  46. #517 on Sep 23
  47. #505 on Sep 24
  48. #504 on Sep 25
  49. #502 on Sep 26
  50. #521 from Sep 27 to Sep 28
  51. #536 on Sep 29
  52. #522 on Sep 30
  53. #520 from Oct 1 to Oct 2
  54. #509 on Oct 3
  55. #510 on Oct 4
  56. #519 on Oct 5
  57. #533 on Oct 6
  58. #531 on Oct 7
  59. #546 on Oct 8
  60. #544 on Oct 9
  61. #533 on Oct 10
  62. #529 on Oct 11
  63. #539 from Oct 12 to Oct 13
  64. #543 on Oct 14
  65. #538 on Oct 15
  66. #540 on Oct 16
  67. #534 from Oct 17 to Oct 18
  68. #549 on Oct 19
  69. #555 on Oct 20
  70. #559 on Oct 21
  71. #546 on Oct 22
  72. #540 on Oct 23
  73. #532 on Oct 24
  74. #584 on Oct 25
  75. #588 on Oct 28
  76. #589 from Oct 29 to Oct 30
  77. #590 on Oct 31

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 22 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 340 signals by file

.github/workflows/pullfrog.yml

  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 45
    [Credential-related source omitted]
  • Access to secretsline 46
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Network accessline 51
    # for Amazon Bedrock (https://docs.pullfrog.com/bedrock)
  • Network accessline 58
    # for Google Vertex AI (https://docs.pullfrog.com/vertex)
  • Network accessline 65
    # for Azure OpenAI (https://docs.pullfrog.com/azure)
  • Access to secretsline 69
    [Credential-related source omitted]
  • Network accessline 75
    # for any OpenAI-compatible endpoint — LiteLLM, Cloudflare AI Gateway,           # self-hosted vLLM (https://docs.pullfrog.com/openai-compatible)
  • Network accessline 76
    # self-hosted vLLM (https://docs.pullfrog.com/openai-compatible)
  • Network accessline 77
    # OPENAI_COMPATIBLE_BASE_URL: https://litellm.example.com/v1
  • Access to secretsline 78
    [Credential-related source omitted]

.gitignore

  • Access to secretsline 11
    [Credential-related source omitted]

AGENTS.md

  • Access to secretsline 50
    [Credential-related source omitted]

CONTRIBUTING.md

  • Network accessline 17
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 27
    - **风格**:遵循 [PEP 8](https://peps.python.org/pep-0008/),用 4 空格缩进、UTF-8、LF 换行。 - **异常处理**:不要用 bare `except:`,必须捕获具体异常类型(`requests.ConnectionError`、`json.JSONDecodeError` 等),项目现有的代码就是这么做的,请保持一致。
  • Network accessline 45
    使用 [Conventional Commits](https://www.conventionalcommits.org/) 格式,参考现有提交历史:
  • Network accessline 69
    仓库启用了 [CodeRabbit](https://www.coderabbit.ai) 作为自动化 review 助手:PR 创建后会自动生成变更摘要和逐行评审意见;在 PR 评论中 `@coderabbitai` 可以让它重新生成摘要、解答疑问或按建议生成修改。它只是辅助手段,合并与否仍以人工 review 结论为准。

README.en.md

  • Network accessline 5
    ![Python](https://img.shields.io/badge/python-3.10+-blue.svg)
  • Network accessline 6
    ![License](https://img.shields.io/badge/license-MIT-green.svg)
  • Network accessline 7
    ![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey.svg)
  • Network accessline 8
    ![Version](https://img.shields.io/badge/version-2.3.0-orange.svg)
  • Network accessline 10
    A lightweight **BOSS Zhipin scraper / crawler** (a.k.a. spider) for job listings on [zhipin.com](https://www.zhipin.com). Instead of driving a heavy Selenium/Playwright browser, it connects to your **already-logged-in Chrome or Microsoft Ed
  • Network accessline 18
    This project is for **learning and technical research purposes only**. It is intended to explore Chrome DevTools Protocol, front-end anti-scraping mechanisms, and data-collection techniques. Do **not** use it for any purpose that violates t
  • Network accessline 25
    # 1. Clone + install deps git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 26
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 79
    # 1. Clone the repo git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 80
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 92
    ### Option 2: One-line curl install
  • Network accessline 97
    mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md \
  • Network accessline 98
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md \
  • Network accessline 99
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/SKILL.md && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/boss_cdp_raw.py \   -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/bo
  • Network accessline 100
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/boss_cdp_raw.py \
  • Network accessline 101
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/boss_cdp_raw.py && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/job_summary.py \   -o ~/.hermes/skills/data-science/boss-zhipin-scra
  • Network accessline 102
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/job_summary.py \
  • Network accessline 103
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/job_summary.py && \ mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/data && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/cit
  • Network accessline 104
    mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/data && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/city_codes.json \   -o ~/.hermes/skills/data-science/boss-zhipin-scraper/data/city_c
  • Network accessline 105
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/city_codes.json \
  • Network accessline 112
    hermes skills install https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md --category data-science
  • Network accessline 123
    The skill is listed on [skills.sh](https://skills.sh). Any agent that supports the Agent Skills format (Claude Code, Codex, Gemini CLI, Cursor, etc.) can install it with this one command — SKILL.md, the scripts, and the city code table ship
  • Network accessline 127
    The skill is published on [ClawHub](https://clawhub.ai), the skill registry of the OpenClaw ecosystem. OpenClaw users can install it with one command:
  • Network accessline 138
    # A pinned version (git tag) pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 139
    pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0" # Always the latest release (fixed URL; version comes from the wheel metadata) pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/do
  • Network accessline 140
    # Always the latest release (fixed URL; version comes from the wheel metadata) pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/download/boss_zhipin_scraper-latest-py3-none-any.whl # uv (recommended, global com
  • Network accessline 141
    pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/download/boss_zhipin_scraper-latest-py3-none-any.whl
  • Network accessline 143
    uv tool install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 162
    You don't have to install it as a Skill — use it as a plain CLI. Since v2.4.0 every version ships as a [GitHub Release](https://github.com/eatmoreduck/boss-zhipin-scraper/releases) with a directly installable wheel — no PyPI needed:
  • Network accessline 165
    # Option A: install a tagged version straight from Git (no manual download; deps resolve from PyPI) pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 166
    pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 168
    uv tool install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 170
    # Option B: install the wheel from the Release page pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/download/v2.4.0/boss_zhipin_scraper-2.4.0-py3-none-any.whl
  • Network accessline 171
    pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/download/v2.4.0/boss_zhipin_scraper-2.4.0-py3-none-any.whl
  • Network accessline 173
    pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/download/boss_zhipin_scraper-latest-py3-none-any.whl
  • Network accessline 179
    # Option C: clone the source and run it without installing git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 180
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Access to secretsline 228
    [Credential-related source omitted]
  • Network accessline 381
    - [LINUX DO](https://linux.do/) — A sincere, friendly, and vibrant tech community. This project endorses and recommends it.
  • Network accessline 387
    [Homepage](https://www.eatmoreduck.com) · [Blog](https://blog.xiaohuangyu.space) · [X](https://x.com/eatmoreduck98)
  • Network accessline 391
    [Credential-related source omitted]

README.md

  • Network accessline 5
    ![Python](https://img.shields.io/badge/python-3.10+-blue.svg)
  • Network accessline 6
    ![License](https://img.shields.io/badge/license-MIT-green.svg)
  • Network accessline 7
    ![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey.svg)
  • Network accessline 8
    ![Version](https://img.shields.io/badge/version-2.3.0-orange.svg)
  • Network accessline 20
    本项目仅供学习和技术研究参考,旨在探讨 Chrome DevTools Protocol、前端反爬机制与数据采集技术。请勿用于任何违反 [BOSS直聘用户协议](https://www.zhipin.com/about/protocol.html) 或相关法律法规的用途,不得用于商业转售、恶意爬取或对目标网站造成负担的行为。使用本项目所产生的一切后果由使用者自行承担,作者不对任何滥用行为负责。
  • Network accessline 27
    # 1. 克隆 + 装依赖 git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 28
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 81
    # 1. 克隆仓库 git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 82
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 94
    ### 方式 2:curl 一键安装
  • Network accessline 99
    mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md \
  • Network accessline 100
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md \
  • Network accessline 101
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/SKILL.md && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/boss_cdp_raw.py \   -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/bo
  • Network accessline 102
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/boss_cdp_raw.py \
  • Network accessline 103
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/boss_cdp_raw.py && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/job_summary.py \   -o ~/.hermes/skills/data-science/boss-zhipin-scra
  • Network accessline 104
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/job_summary.py \
  • Network accessline 105
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/job_summary.py && \ mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/data && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/cit
  • Network accessline 106
    mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/data && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/city_codes.json \   -o ~/.hermes/skills/data-science/boss-zhipin-scraper/data/city_c
  • Network accessline 107
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/city_codes.json \
  • Network accessline 114
    hermes skills install https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md --category data-science
  • Network accessline 125
    [skills.sh](https://skills.sh) 已收录本技能。任何支持 Agent Skills 格式的 agent(Claude Code、Codex、Gemini CLI、Cursor 等)都可以用这条命令安装,SKILL.md、脚本和城市码表随技能一起分发,按提示选择要安装到哪个 agent 即可。
  • Network accessline 129
    本技能已上架 [ClawHub](https://clawhub.ai)(OpenClaw 生态的技能注册表),OpenClaw 用户可一条命令安装:
  • Network accessline 140
    # 指定版本(git tag) pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 141
    pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0" # 永远装最新 Release(固定 URL,版本以 wheel 元数据为准) pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/download/boss_zhipin_scraper-latest-py3-n
  • Network accessline 142
    # 永远装最新 Release(固定 URL,版本以 wheel 元数据为准) pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/download/boss_zhipin_scraper-latest-py3-none-any.whl # uv(推荐,全局命令)
  • Network accessline 143
    pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/download/boss_zhipin_scraper-latest-py3-none-any.whl
  • Network accessline 145
    uv tool install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 164
    不想装成 Skill 也可以直接当 CLI 用。自 v2.4.0 起每个版本都会发布 [GitHub Release](https://github.com/eatmoreduck/boss-zhipin-scraper/releases)(附可直接安装的 whl),无需上 PyPI:
  • Network accessline 167
    # 方式 A:从 Git 安装指定版本(无需手动下载文件;依赖会自动从 PyPI 解析) pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 168
    pip install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 170
    uv tool install "git+https://github.com/eatmoreduck/boss-zhipin-scraper.git@v2.4.0"
  • Network accessline 172
    # 方式 B:从 Release 页下载 whl 直装 pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/download/v2.4.0/boss_zhipin_scraper-2.4.0-py3-none-any.whl
  • Network accessline 173
    pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/download/v2.4.0/boss_zhipin_scraper-2.4.0-py3-none-any.whl
  • Network accessline 175
    pip install https://github.com/eatmoreduck/boss-zhipin-scraper/releases/latest/download/boss_zhipin_scraper-latest-py3-none-any.whl
  • Network accessline 181
    # 方式 C:克隆源码运行(不安装) git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 182
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git
  • Network accessline 382
    - [LINUX DO](https://linux.do/) — 真诚、友善、充满活力的技术社区,本项目认可并推荐。
  • Network accessline 388
    [主页](https://www.eatmoreduck.com) · [博客](https://blog.xiaohuangyu.space) · [X](https://x.com/eatmoreduck98)
  • Network accessline 392
    [Credential-related source omitted]

SKILL.md

  • Network accessline 222
    "company_industry": "电子商务",       "skills": "Java | Spring | AI",       "job_link": "https://www.zhipin.com/job_detail/xxx.html",
  • Network accessline 223
    "skills": "Java | Spring | AI",       "job_link": "https://www.zhipin.com/job_detail/xxx.html",       "company_link": "https://www.zhipin.com/gongsi/xxx.html",
  • Network accessline 224
    "job_link": "https://www.zhipin.com/job_detail/xxx.html",
  • Network accessline 225
    "company_link": "https://www.zhipin.com/gongsi/xxx.html",
  • Network accessline 280
    # 推荐:curl 一键安装
  • Network accessline 281
    mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts &&  curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md
  • Network accessline 282
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/SKILL.md \
  • Network accessline 283
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/SKILL.md && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/boss_cdp_raw.py \   -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/bo
  • Network accessline 284
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/boss_cdp_raw.py \
  • Network accessline 285
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/boss_cdp_raw.py && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/job_summary.py \   -o ~/.hermes/skills/data-science/boss-zhipin-scra
  • Network accessline 286
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/scripts/job_summary.py \
  • Network accessline 287
    -o ~/.hermes/skills/data-science/boss-zhipin-scraper/scripts/job_summary.py && \ mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/data && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/cit
  • Network accessline 288
    mkdir -p ~/.hermes/skills/data-science/boss-zhipin-scraper/data && \ curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/city_codes.json \   -o ~/.hermes/skills/data-science/boss-zhipin-scraper/data/city_c
  • Network accessline 289
    curl -sL https://raw.githubusercontent.com/eatmoreduck/boss-zhipin-scraper/master/data/city_codes.json \
  • Network accessline 296
    git clone https://github.com/eatmoreduck/boss-zhipin-scraper.git

scripts/boss_cdp_raw.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 76
    API_JOB_LIST_PATH = "/wapi/zpgeek/search/joblist.json" HOT_CITY_URL = "https://www.zhipin.com/wapi/zpgeek/search/job/hot/city.json"
  • Network accessline 77
    HOT_CITY_URL = "https://www.zhipin.com/wapi/zpgeek/search/job/hot/city.json"
  • Network accessline 78
    CITY_GROUP_URL = "https://www.zhipin.com/wapi/zpCommon/data/cityGroup.json"
  • Access to secretsline 117
    [Credential-related source omitted]
  • Access to secretsline 124
    [Credential-related source omitted]
  • Access to secretsline 169
    [Credential-related source omitted]
  • Network accessline 263
    # 筛选参数映射 # Source snapshots: # - 城市: https://www.zhipin.com/wapi/zpgeek/search/job/hot/city.json + cityGroup.json
  • Network accessline 264
    # Source snapshots: # - 城市: https://www.zhipin.com/wapi/zpgeek/search/job/hot/city.json + cityGroup.json # - 筛选项: https://www.zhipin.com/wapi/zpgeek/search/job/condition.json
  • Network accessline 265
    # - 城市: https://www.zhipin.com/wapi/zpgeek/search/job/hot/city.json + cityGroup.json
  • Network accessline 266
    # - 筛选项: https://www.zhipin.com/wapi/zpgeek/search/job/condition.json
  • Network accessline 371
    raise RuntimeError("缺少 CDP 运行依赖")         self.cdp_port = cdp_port         resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=10)
  • Network accessline 372
    self.cdp_port = cdp_port         resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=10)         ws_url = resp.json()["webSocketDebuggerUrl"]
  • Network accessline 373
    resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=10)
  • Possible obfuscationline 601
    body = base64.b64decode(body).decode("utf-8", errors="replace")
  • Network accessline 640
    "encrypt_brand_id": encrypt_brand_id,         "job_link": (             f"https://www.zhipin.com/job_detail/{encrypt_job_id}.html"
  • Network accessline 641
    "job_link": (             f"https://www.zhipin.com/job_detail/{encrypt_job_id}.html"             if encrypt_job_id else ""
  • Network accessline 642
    f"https://www.zhipin.com/job_detail/{encrypt_job_id}.html"
  • Network accessline 644
    ),         "company_link": (             f"https://www.zhipin.com/gongsi/{encrypt_brand_id}.html"
  • Network accessline 645
    "company_link": (             f"https://www.zhipin.com/gongsi/{encrypt_brand_id}.html"             if encrypt_brand_id else ""
  • Network accessline 646
    f"https://www.zhipin.com/gongsi/{encrypt_brand_id}.html"
  • Network accessline 681
    for (var j = 0; j < tagEls.length; j++) tags.push(tagEls[j].innerText.trim());         var jobLink = nameEl ? (nameEl.getAttribute('href') || '') : '';         if (jobLink && jobLink.charAt(0) === '/') jobLink = 'https://www.zhipin.com' + j
  • Network accessline 682
    var jobLink = nameEl ? (nameEl.getAttribute('href') || '') : '';         if (jobLink && jobLink.charAt(0) === '/') jobLink = 'https://www.zhipin.com' + jobLink;         var cLink = bossLink ? (bossLink.getAttribute('href') || '') : '';
  • Network accessline 683
    if (jobLink && jobLink.charAt(0) === '/') jobLink = 'https://www.zhipin.com' + jobLink;
  • Network accessline 684
    var cLink = bossLink ? (bossLink.getAttribute('href') || '') : '';         if (cLink && cLink.charAt(0) === '/') cLink = 'https://www.zhipin.com' + cLink;         var t = nameEl ? nameEl.innerText.trim() : '';
  • Network accessline 685
    if (cLink && cLink.charAt(0) === '/') cLink = 'https://www.zhipin.com' + cLink;
  • Network accessline 1215
    cdp.send(         "Page.navigate",         {"url": "https://www.zhipin.com/web/user/"},
  • Network accessline 1216
    "Page.navigate",         {"url": "https://www.zhipin.com/web/user/"},         sid,
  • Network accessline 1217
    {"url": "https://www.zhipin.com/web/user/"},
  • Network accessline 1698
    if code:             params[key] = code     return f"https://www.zhipin.com/web/geek/job?{urlencode(params)}"
  • Network accessline 1700
    return f"https://www.zhipin.com/web/geek/job?{urlencode(params)}"
  • Network accessline 2480
    else:         try:             resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=5)
  • Network accessline 2481
    try:             resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=5)             data = resp.json()
  • Network accessline 2482
    resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=5)
  • Network accessline 2566
    def is_cdp_ready(cdp_port):     try:         resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=2)
  • Network accessline 2567
    try:         resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=2)         return resp.status_code == 200
  • Network accessline 2568
    resp = requests.get(f"http://127.0.0.1:{cdp_port}/json/version", timeout=2)

scripts/job_summary.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/package-skill.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 95
    rm -rf "$STAGE"

tests/test_chrome_setup.py

  • Executable scriptline 1
    Executable file
  • Network accessline 150
    mock.call(                     "Page.navigate",                     {"url": "https://www.zhipin.com/web/user/"},
  • Network accessline 151
    "Page.navigate",                     {"url": "https://www.zhipin.com/web/user/"},                     "login-session",
  • Network accessline 152
    {"url": "https://www.zhipin.com/web/user/"},
  • Network accessline 540
    "location": "上海",             "tags": "3-5年 | 本科",             "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 541
    "tags": "3-5年 | 本科",             "job_link": "https://www.zhipin.com/job_detail/abc.html",         }
  • Network accessline 542
    "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 567
    "location": "上海",             "tags": "3-5年 | 本科",             "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 568
    "tags": "3-5年 | 本科",             "job_link": "https://www.zhipin.com/job_detail/abc.html",             "boss_active_status": "本周活跃",
  • Network accessline 569
    "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 840
    module = load_module()         job = {             "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 841
    job = {             "job_link": "https://www.zhipin.com/job_detail/abc.html",             "security_id": "sec value",
  • Network accessline 842
    "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 849
    self.assertEqual(job["job_link"], "https://www.zhipin.com/job_detail/abc.html")
  • Network accessline 850
    self.assertEqual(             detail_url,             "https://www.zhipin.com/job_detail/abc.html?lid=lid-123&securityId=sec+value",
  • Network accessline 851
    detail_url,             "https://www.zhipin.com/job_detail/abc.html?lid=lid-123&securityId=sec+value",         )
  • Network accessline 852
    "https://www.zhipin.com/job_detail/abc.html?lid=lid-123&securityId=sec+value",
  • Network accessline 869
    self.assertEqual(mapped["encrypt_boss_id"], "boss1")         self.assertEqual(mapped["encrypt_brand_id"], "brand1")         self.assertEqual(mapped["job_link"], "https://www.zhipin.com/job_detail/enc1.html")
  • Network accessline 870
    self.assertEqual(mapped["encrypt_brand_id"], "brand1")         self.assertEqual(mapped["job_link"], "https://www.zhipin.com/job_detail/enc1.html")         self.assertEqual(mapped["company_link"], "https://www.zhipin.com/gongsi/brand1.html")
  • Network accessline 871
    self.assertEqual(mapped["job_link"], "https://www.zhipin.com/job_detail/enc1.html")
  • Network accessline 872
    self.assertEqual(mapped["company_link"], "https://www.zhipin.com/gongsi/brand1.html")
  • Access to secretsline 1255
    [Credential-related source omitted]
  • Access to secretsline 1256
    [Credential-related source omitted]
  • Access to secretsline 1272
    [Credential-related source omitted]
  • Access to secretsline 1273
    [Credential-related source omitted]
  • Network accessline 1345
    "salary": "30-60K",             "salary_source": "api",             "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 1346
    "salary_source": "api",             "job_link": "https://www.zhipin.com/job_detail/abc.html",         }]))
  • Network accessline 1347
    "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 1351
    "salary": "",             "salary_source": "api_empty",             "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 1352
    "salary_source": "api_empty",             "job_link": "https://www.zhipin.com/job_detail/abc.html",         }]))
  • Network accessline 1353
    "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 1366
    "location": "上海",                 "tags_list": "3-5年 | 本科",                 "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 1367
    "tags_list": "3-5年 | 本科",                 "job_link": "https://www.zhipin.com/job_detail/abc.html",                 "skill_tags": ["Python", "LLM"],
  • Network accessline 1368
    "job_link": "https://www.zhipin.com/job_detail/abc.html",
  • Network accessline 1424
    "job_id": "blocked",             "title": "AI Product Manager",             "job_link": "https://www.zhipin.com/job_detail/blocked.html",
  • Network accessline 1425
    "title": "AI Product Manager",             "job_link": "https://www.zhipin.com/job_detail/blocked.html",         }
  • Network accessline 1426
    "job_link": "https://www.zhipin.com/job_detail/blocked.html",
  • Access to secretsline 1527
    [Credential-related source omitted]
  • Access to secretsline 1798
    [Credential-related source omitted]
  • Network accessline 1819
    def make_joblist_events(request_id, url="https://www.zhipin.com/wapi/zpgeek/search/joblist.json?_=1"):
  • Network accessline 2340
    base_job_id = hashlib.md5(                 "https://www.zhipin.com/job_detail/e1.html".encode()
  • Network accessline 2341
    "https://www.zhipin.com/job_detail/e1.html".encode()

tests/test_job_summary.py

  • Executable scriptline 1
    Executable file

uv.lock

  • Network accessline 30
    name = "certifi" version = "2026.5.20" source = { registry = "https://pypi.org/simple" }
  • Network accessline 31
    version = "2026.5.20" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", hash = "sha256:69
  • Network accessline 32
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 33
    sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d", size = 
  • Network accessline 34
    wheels = [     { url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902
  • Network accessline 35
    { url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", size 
  • Network accessline 39
    name = "charset-normalizer" version = "3.4.7" source = { registry = "https://pypi.org/simple" }
  • Network accessline 40
    version = "3.4.7" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256
  • Network accessline 41
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 42
    sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", 
  • Network accessline 43
    wheels = [     { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb
  • Network accessline 44
    { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c4559
  • Network accessline 45
    { url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 46
    { url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 47
    { url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d
  • Network accessline 48
    { url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c
  • Network accessline 49
    { url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb39
  • Network accessline 50
    { url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf
  • Network accessline 51
    { url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b8
  • Network accessline 52
    { url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434
  • Network accessline 53
    { url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0a
  • Network accessline 54
    { url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df
  • Network accessline 55
    { url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc91
  • Network accessline 56
    { url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fe
  • Network accessline 57
    { url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6f
  • Network accessline 58
    { url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce
  • Network accessline 59
    { url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc92372
  • Network accessline 60
    { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d7
  • Network accessline 61
    { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 62
    { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 63
    { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532b
  • Network accessline 64
    { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2
  • Network accessline 65
    { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe4
  • Network accessline 66
    { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4
  • Network accessline 67
    { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8
  • Network accessline 68
    { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36
  • Network accessline 69
    { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2
  • Network accessline 70
    { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b43
  • Network accessline 71
    { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b
  • Network accessline 72
    { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6a
  • Network accessline 73
    { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301
  • Network accessline 74
    { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e8
  • Network accessline 75
    { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096
  • Network accessline 76
    { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2
  • Network accessline 77
    { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 78
    { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 79
    { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac
  • Network accessline 80
    { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5
  • Network accessline 81
    { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f962
  • Network accessline 82
    { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497
  • Network accessline 83
    { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86dd
  • Network accessline 84
    { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4b
  • Network accessline 85
    { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df286
  • Network accessline 86
    { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2d
  • Network accessline 87
    { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf32
  • Network accessline 88
    { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549
  • Network accessline 89
    { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b851866
  • Network accessline 90
    { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a02
  • Network accessline 91
    { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e060
  • Network accessline 92
    { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a
  • Network accessline 93
    { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 94
    { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 95
    { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec
  • Network accessline 96
    { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e
  • Network accessline 97
    { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d8
  • Network accessline 98
    { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b22
  • Network accessline 99
    { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770
  • Network accessline 100
    { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571
  • Network accessline 101
    { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b2
  • Network accessline 102
    { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4
  • Network accessline 103
    { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606
  • Network accessline 104
    { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d527
  • Network accessline 105
    { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc3
  • Network accessline 106
    { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa7
  • Network accessline 107
    { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4d
  • Network accessline 108
    { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6
  • Network accessline 109
    { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 110
    { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 111
    { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7154
  • Network accessline 112
    { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b
  • Network accessline 113
    { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59
  • Network accessline 114
    { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b8
  • Network accessline 115
    { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef05472
  • Network accessline 116
    { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53f
  • Network accessline 117
    { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57d
  • Network accessline 118
    { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee73
  • Network accessline 119
    { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd6
  • Network accessline 120
    { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05a
  • Network accessline 121
    { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410
  • Network accessline 122
    { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab662
  • Network accessline 123
    { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba
  • Network accessline 124
    { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced9
  • Network accessline 125
    { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha2
  • Network accessline 126
    { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha2
  • Network accessline 127
    { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89
  • Network accessline 128
    { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:
  • Network accessline 129
    { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9
  • Network accessline 130
    { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43ce
  • Network accessline 131
    { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97a
  • Network accessline 132
    { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284
  • Network accessline 133
    { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d5518
  • Network accessline 134
    { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82b
  • Network accessline 135
    { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164
  • Network accessline 136
    { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e
  • Network accessline 137
    { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615
  • Network accessline 138
    { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a2737
  • Network accessline 139
    { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a7
  • Network accessline 140
    { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d"
  • Network accessline 144
    name = "idna" version = "3.18" source = { registry = "https://pypi.org/simple" }
  • Network accessline 145
    version = "3.18" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654
  • Network accessline 146
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 147
    sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, 
  • Network accessline 148
    wheels = [     { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2"
  • Network accessline 149
    { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455,
  • Network accessline 153
    name = "requests" version = "2.34.2" source = { registry = "https://pypi.org/simple" }
  • Network accessline 154
    version = "2.34.2" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 155
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 160
    { name = "urllib3" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104
  • Network accessline 161
    ] sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 
  • Network accessline 162
    sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 14
  • Network accessline 163
    wheels = [     { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e
  • Network accessline 164
    { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 
  • Network accessline 168
    name = "urllib3" version = "2.7.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 169
    version = "2.7.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b6
  • Network accessline 170
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 171
    sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 4336
  • Network accessline 172
    wheels = [     { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276
  • Network accessline 173
    { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 13
  • Network accessline 177
    name = "websocket-client" version = "1.9.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 178
    version = "1.9.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9
  • Network accessline 179
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 180
    sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", si
  • Network accessline 181
    wheels = [     { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529
  • Network accessline 182
    { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", 

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 183 facts

and 133 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

eatmoreduck/boss-zhipin-scraper: #600 on hotskills, 1.7k stars

[![eatmoreduck/boss-zhipin-scraper on hotskills](https://hotskills.dev/badge/eatmoreduck-boss-zhipin-scraper.svg)](https://hotskills.dev/skill/eatmoreduck-boss-zhipin-scraper/)