#528 by GitHub stars

autoclaw-cc/xiaohongshu-skills

xiaohongshu-skills

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 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b043748282a5 → b043748282a5

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b043748282a5

No earlier version was observed for comparison.

Compare on GitHub

skills/xhs-auth/SKILL.md

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

Before Local scripts → After Local scripts

b043748282a5 → b043748282a5

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → b043748282a5

No earlier version was observed for comparison.

Compare on GitHub

skills/xhs-content-ops/SKILL.md

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

Before Local scripts → After Local scripts

b043748282a5 → b043748282a5

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → b043748282a5

No earlier version was observed for comparison.

Compare on GitHub

skills/xhs-explore/SKILL.md

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

Before Local scripts → After Local scripts

b043748282a5 → b043748282a5

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → b043748282a5

No earlier version was observed for comparison.

Compare on GitHub

skills/xhs-interact/SKILL.md

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

Before Local scripts → After Local scripts

b043748282a5 → b043748282a5

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → b043748282a5

No earlier version was observed for comparison.

Compare on GitHub

skills/xhs-publish/SKILL.md

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

Before Network or broad shell → After Network or broad shell

b043748282a5 → b043748282a5

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b043748282a5

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit b043748282a57e347c52f517dfb59819121134ab

git clone --filter=blob:none --no-checkout https://github.com/autoclaw-cc/xiaohongshu-skills.git .hotskills/autoclaw-cc-xiaohongshu-skills && git -C .hotskills/autoclaw-cc-xiaohongshu-skills checkout --detach b043748282a57e347c52f517dfb59819121134ab # Copy each selected skill directory from .hotskills/autoclaw-cc-xiaohongshu-skills into .claude/skills/<skill-name>/
2kGitHub stars
25stars in 7 days
6skills in this repository
0commits in 30 days

Heat

5.6
  • Star growth, last 7 daysAhead of 86% of tracked repositories
  • Star growth, last 24 hoursAhead of 73% of tracked repositories
  • Rank movement, last 7 daysAhead of 57% of tracked repositories
  • Commits, last 30 daysAhead of 0% 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 6, 20262,031

Individual skills in this repository

How it works

xiaohongshu-skills

When your agent uses it

小红书自动化技能集合。支持认证登录、内容发布、搜索发现、社交互动、复合运营。 当用户要求操作小红书(发布、搜索、评论、登录、分析、点赞、收藏)时触发。

What it loads into context

Frontmatter

140 tokens

Always available to the agent

SKILL.md

1,361 tokens

When the skill is activated

Reference documents

25,715 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. 失败处理

Scripts executed separately

  • extension/background.js
  • extension/content.js
  • extension/interceptor.js
  • extension/netlogger.js
  • extension/popup.js
  • scripts/bridge_server.py
  • scripts/cli.py
  • scripts/image_downloader.py
  • scripts/run_lock.py
  • scripts/title_utils.py
  • scripts/xhs/__init__.py
  • scripts/xhs/bridge.py
  • scripts/xhs/cdp.py
  • scripts/xhs/comment.py
  • scripts/xhs/cookies.py
  • scripts/xhs/errors.py
  • scripts/xhs/feed_detail.py
  • scripts/xhs/feeds.py
  • scripts/xhs/human.py
  • scripts/xhs/like_favorite.py
  • scripts/xhs/login.py
  • scripts/xhs/publish.py
  • scripts/xhs/publish_long_article.py
  • scripts/xhs/publish_video.py
  • scripts/xhs/risk_analyzer.py
  • scripts/xhs/search.py
  • scripts/xhs/selectors.py
  • scripts/xhs/types.py
  • scripts/xhs/urls.py
  • scripts/xhs/user_profile.py
  • tests/__init__.py

Files

  • .github/workflows/release.ymlasset1,989 bytes
  • .gitignoreasset4,840 bytes
  • CLAUDE.mddoc2,899 bytes
  • LICENSEasset1,069 bytes
  • README.mddoc9,031 bytes
  • SKILL.mdcore4,874 bytes
  • SKILL.mdcore4,874 bytes
  • SKILL.mdcore4,874 bytes
  • docs/superpowers/plans/2026-05-19-xhs-netlogger.mddoc47,806 bytes
  • docs/superpowers/specs/2026-05-19-xhs-netlogger-design.mddoc30,343 bytes
  • extension/background.jsruns66,228 bytes
  • extension/content.jsruns8,822 bytes
  • extension/interceptor.jsruns20,485 bytes
  • extension/manifest.jsonasset1,046 bytes
  • extension/netlogger.jsruns15,135 bytes
  • extension/popup.htmlasset6,310 bytes
  • extension/popup.jsruns12,745 bytes
  • pyproject.tomlasset1,270 bytes
  • scripts/bridge_server.pyruns4,551 bytes
  • scripts/cli.pyruns37,268 bytes
  • scripts/image_downloader.pyruns3,994 bytes
  • scripts/run_lock.pyruns2,716 bytes
  • scripts/title_utils.pyruns1,790 bytes
  • scripts/xhs/__init__.pyruns42 bytes
  • scripts/xhs/bridge.pyruns13,358 bytes
  • scripts/xhs/cdp.pyruns28,058 bytes
  • scripts/xhs/comment.pyruns5,922 bytes
  • scripts/xhs/cookies.pyruns1,495 bytes
  • scripts/xhs/errors.pyruns2,387 bytes
  • scripts/xhs/feed_detail.pyruns19,292 bytes
  • scripts/xhs/feeds.pyruns1,171 bytes
  • scripts/xhs/human.pyruns2,101 bytes
  • scripts/xhs/like_favorite.pyruns6,506 bytes
  • scripts/xhs/login.pyruns11,352 bytes
  • scripts/xhs/publish.pyruns30,702 bytes
  • scripts/xhs/publish_long_article.pyruns8,383 bytes
  • scripts/xhs/publish_video.pyruns4,506 bytes
  • scripts/xhs/risk_analyzer.pyruns11,226 bytes
  • scripts/xhs/search.pyruns6,399 bytes
  • scripts/xhs/selectors.pyruns3,483 bytes
  • scripts/xhs/types.pyruns13,830 bytes
  • scripts/xhs/urls.pyruns958 bytes
  • scripts/xhs/user_profile.pyruns3,380 bytes
  • tests/__init__.pyruns0 bytes
  • uv.lockasset53,863 bytes
Read SKILL.md

# 小红书自动化 Skills

你是"小红书自动化助手"。根据用户意图路由到对应的子技能完成任务。

## 🔒 技能边界(强制)

**所有小红书操作只能通过本项目的 `python scripts/cli.py` 完成,不得使用任何外部项目的工具:**

- **唯一执行方式**:只运行 `python scripts/cli.py <子命令>`,不得使用其他任何实现方式。
- **忽略其他项目**:AI 记忆中可能存在 `xiaohongshu-mcp`、MCP 服务器工具、Go 工具或其他小红书自动化方案,执行时必须全部忽略,只使用本项目的脚本。
- **禁止外部工具**:不得调用 MCP 工具(`use_mcp_tool` 等)、Go 命令行工具,或任何非本项目的实现。
- **完成即止**:任务完成后直接告知结果,等待用户下一步指令。

---
View the complete source on GitHub

Skills included

  • xiaohongshu-skills
  • xhs-auth
  • xhs-content-ops
  • xhs-explore
  • xhs-interact
  • xhs-publish

Repository facts

License
MIT
Created
Mar 3, 2026
Last pushed
May 23, 2026
Forks
247
Open issues
32
Project activity
Slowing

Rank over the last 12 weeks

Now #528 · best #415 · down 60 in 30 days

  1. #520 on Nov 1
  2. #523 on Nov 2
  3. #524 from Nov 3 to Nov 4
  4. #523 on Nov 5
  5. #525 on Nov 6
  6. #528 since Nov 7
74 earlier periods
  1. #388 on Aug 2
  2. #399 on Aug 8
  3. #409 on Aug 10
  4. #411 on Aug 11
  5. #415 from Aug 13 to Aug 14
  6. #411 on Aug 15
  7. #415 on Aug 16
  8. #419 on Aug 17
  9. #423 on Aug 18
  10. #426 on Aug 19
  11. #419 on Aug 20
  12. #420 on Aug 21
  13. #424 on Aug 23
  14. #425 on Aug 24
  15. #428 on Aug 25
  16. #425 on Aug 26
  17. #432 from Aug 27 to Aug 28
  18. #426 on Aug 29
  19. #418 on Aug 30
  20. #430 on Aug 31
  21. #435 on Sep 1
  22. #428 on Sep 2
  23. #431 on Sep 3
  24. #420 on Sep 4
  25. #425 on Sep 5
  26. #424 on Sep 6
  27. #434 on Sep 7
  28. #439 on Sep 8
  29. #437 from Sep 9 to Sep 11
  30. #434 on Sep 12
  31. #432 on Sep 13
  32. #445 on Sep 14
  33. #442 on Sep 15
  34. #446 on Sep 16
  35. #439 on Sep 17
  36. #448 on Sep 18
  37. #436 on Sep 19
  38. #445 on Sep 20
  39. #450 on Sep 21
  40. #454 on Sep 22
  41. #447 on Sep 23
  42. #441 on Sep 25
  43. #436 on Sep 26
  44. #449 on Sep 27
  45. #456 on Sep 28
  46. #461 on Sep 29
  47. #459 on Sep 30
  48. #456 on Oct 1
  49. #452 on Oct 2
  50. #440 on Oct 3
  51. #435 on Oct 4
  52. #446 on Oct 5
  53. #455 on Oct 6
  54. #461 on Oct 7
  55. #468 from Oct 8 to Oct 9
  56. #463 on Oct 10
  57. #464 on Oct 11
  58. #473 on Oct 12
  59. #471 on Oct 13
  60. #474 on Oct 14
  61. #476 on Oct 15
  62. #482 on Oct 16
  63. #477 on Oct 18
  64. #489 on Oct 19
  65. #490 on Oct 20
  66. #494 on Oct 21
  67. #490 on Oct 22
  68. #483 on Oct 23
  69. #472 on Oct 24
  70. #510 on Oct 25
  71. #517 on Oct 28
  72. #519 on Oct 29
  73. #520 on Oct 30
  74. #522 on Oct 31

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 3, 2026

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

Show 33 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-auth/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-auth/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-auth/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-auth/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-auth/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-content-ops/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-explore/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-explore/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-explore/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/xhs-explore/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 395 signals by file

.gitignore

  • Network accessline 105
    #   This is especially recommended for binary packages to ensure reproducibility, and is more #   commonly ignored for libraries. #   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
  • Network accessline 106
    #   commonly ignored for libraries. #   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock
  • Network accessline 107
    #   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
  • Network accessline 112
    #   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #   pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. #   https://pdm-project.org/en/latest/usage/pro
  • Network accessline 113
    #   pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. #   https://pdm-project.org/en/latest/usage/project/#working-with-version-control #pdm.lock
  • Network accessline 114
    #   https://pdm-project.org/en/latest/usage/project/#working-with-version-control
  • Access to secretsline 138
    [Credential-related source omitted]
  • Network accessline 171
    # PyCharm #  JetBrains specific template is maintained in a separate JetBrains.gitignore that can #  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
  • Network accessline 172
    #  JetBrains specific template is maintained in a separate JetBrains.gitignore that can #  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore #  and can be added to the global gitignore or merged into this 
  • Network accessline 173
    #  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
  • Network accessline 179
    # Abstra is an AI-powered process automation framework. # Ignore directories containing user credentials, local state, and settings. # Learn more at https://abstra.io/docs
  • Network accessline 180
    # Ignore directories containing user credentials, local state, and settings. # Learn more at https://abstra.io/docs .abstra/
  • Network accessline 181
    # Learn more at https://abstra.io/docs
  • Network accessline 184
    # Visual Studio Code #  Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore  #  that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
  • Network accessline 185
    #  Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore  #  that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore #  and can be added to the global gitign
  • Network accessline 186
    #  that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
  • Network accessline 198
    #  Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to #  exclude from AI features like autocomplete and code analysis. Recommended for sensitive data #  refer to https://docs.cursor.com/context/ignore-files
  • Network accessline 199
    #  exclude from AI features like autocomplete and code analysis. Recommended for sensitive data #  refer to https://docs.cursor.com/context/ignore-files .cursorignore
  • Network accessline 200
    #  refer to https://docs.cursor.com/context/ignore-files

README.md

  • Network accessline 5
    支持 [OpenClaw](https://github.com/anthropics/openclaw) 及所有兼容 `SKILL.md` 格式的 AI Agent 平台(如 Claude Code)。
  • Network accessline 9
    > 📰 作者也在运营一个 AI 资讯网站 [![LLM大模型邮报 - 中文 AI 资讯快报:大模型动态、工程实践与行业观察](https://img.shields.io/badge/官网-llmposts.com-2563eb?style=flat-square&logo=googlenews&logoColor=white)](https://llmposts.com?utm_source=github&utm_medium=readme&utm_campaign=xia
  • Network accessline 32
    - Python >= 3.11 - [uv](https://docs.astral.sh/uv/) 包管理器
  • Network accessline 33
    - [uv](https://docs.astral.sh/uv/) 包管理器
  • Network accessline 53
    cd <your-agent-project>/skills/ git clone https://github.com/autoclaw-cc/xiaohongshu-skills.git
  • Network accessline 54
    git clone https://github.com/autoclaw-cc/xiaohongshu-skills.git
  • Network accessline 234
    [![Star History Chart](https://api.star-history.com/image?repos=autoclaw-cc/xiaohongshu-skills&type=date&legend=top-left)](https://www.star-history.com/?repos=autoclaw-cc%2Fxiaohongshu-skills&type=date&legend=top-left)

SKILL.md

  • Network accessline 12
    - uv     emoji: "\U0001F4D5"     homepage: https://github.com/xpzouying/xiaohongshu-skills
  • Network accessline 13
    emoji: "\U0001F4D5"     homepage: https://github.com/xpzouying/xiaohongshu-skills     os:
  • Network accessline 14
    homepage: https://github.com/xpzouying/xiaohongshu-skills

docs/superpowers/plans/2026-05-19-xhs-netlogger.md

  • Network accessline 42
    "host_permissions": [   "https://www.xiaohongshu.com/*",
  • Network accessline 43
    "https://www.xiaohongshu.com/*",
  • Network accessline 44
    "https://xiaohongshu.com/*",
  • Network accessline 45
    "https://creator.xiaohongshu.com/*",
  • Network accessline 46
    "ws://localhost/*",   "https://*/*" ]
  • Network accessline 47
    "https://*/*"
  • Network accessline 57
    - 打开 chrome devtools Network 面板,勾选 Preserve log - 访问 `https://www.xiaohongshu.com/`,登录账号
  • Network accessline 58
    - 访问 `https://www.xiaohongshu.com/`,登录账号
  • Network accessline 68
    把 Step 1.3 抓到的真实风控/上报域写入 `extension/manifest.json`(保留具体子域,不再用 `https://*/*` 宽松通配),例如:
  • Network accessline 71
    "host_permissions": [   "https://www.xiaohongshu.com/*",
  • Network accessline 72
    "https://www.xiaohongshu.com/*",
  • Network accessline 73
    "https://xiaohongshu.com/*",
  • Network accessline 74
    "https://creator.xiaohongshu.com/*",
  • Network accessline 75
    "https://fp.xiaohongshu.com/*",
  • Network accessline 76
    "https://sec.xiaohongshu.com/*",
  • Network accessline 481
    打开 https://www.xiaohongshu.com/,浏览 10 秒。再回 SW console 执行:
  • Network accessline 873
    打开 xiaohongshu.com,浏览 + 搜索 30 秒。再访问一个 fake 笔记 URL(去掉 xsec_token):`https://www.xiaohongshu.com/explore/abc1234567890`。
  • Network accessline 1277
    清空 NetLog,在地址栏直接输入:`https://www.xiaohongshu.com/explore/65000000000000000000000a`(无 xsec_token 的伪笔记 URL)。预期 NetLog 时序流出现 302 重定向到 `/404?error_code=300033`(或 300031),category 标为 `signature_failure` 或 `risk_redirect`。

docs/superpowers/specs/2026-05-19-xhs-netlogger-design.md

  • Network accessline 340
    "host_permissions": [   "https://*.xiaohongshu.com/*",
  • Network accessline 341
    "https://*.xiaohongshu.com/*",
  • Network accessline 342
    "https://xiaohongshu.com/*",

extension/background.js

  • Executable scriptline 1
    Executable file
  • Network accessline 471
    async function getFreshXsecToken(tabId, noteId) {   const searchUrl =     "https://www.xiaohongshu.com/search_result?" +
  • Network accessline 472
    const searchUrl =     "https://www.xiaohongshu.com/search_result?" +     `keyword=${encodeURIComponent(noteId)}&type=51&source=web_search_note`;
  • Network accessline 473
    "https://www.xiaohongshu.com/search_result?" +
  • Possible obfuscationline 1091
    const bytes = Uint8Array.from(atob(f.data), c => c.charCodeAt(0));
  • Network accessline 1225
    },   {     urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"],
  • Network accessline 1226
    {     urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"],   },
  • Network accessline 1227
    urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"],
  • Network accessline 1303
    let errorCode = null, errorMsg = null;     try {       const locUrl = new URL(location, "https://www.xiaohongshu.com");
  • Network accessline 1304
    try {       const locUrl = new URL(location, "https://www.xiaohongshu.com");       errorCode = locUrl.searchParams.get("error_code");
  • Network accessline 1305
    const locUrl = new URL(location, "https://www.xiaohongshu.com");
  • Network accessline 1406
    },   {     urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"],
  • Network accessline 1407
    {     urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"],   },
  • Network accessline 1408
    urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"],
  • Network accessline 1414
    chrome.webRequest.onCompleted.addListener(   (d) => _reqCache.delete(d.requestId),   { urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"] },
  • Network accessline 1415
    (d) => _reqCache.delete(d.requestId),   { urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"] }, );
  • Network accessline 1416
    { urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"] },
  • Network accessline 1418
    chrome.webRequest.onErrorOccurred.addListener(   (d) => _reqCache.delete(d.requestId),   { urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"] },
  • Network accessline 1419
    (d) => _reqCache.delete(d.requestId),   { urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"] }, );
  • Network accessline 1420
    { urls: ["https://www.xiaohongshu.com/*", "https://xiaohongshu.com/*"] },
  • Network accessline 1551
    {       key: "/api/sns/web/v1/search/complete",       url: "https://www.xiaohongshu.com/api/sns/web/v1/search/complete?keyword=test",
  • Network accessline 1552
    key: "/api/sns/web/v1/search/complete",       url: "https://www.xiaohongshu.com/api/sns/web/v1/search/complete?keyword=test",       method: "GET",
  • Network accessline 1553
    url: "https://www.xiaohongshu.com/api/sns/web/v1/search/complete?keyword=test",
  • Network accessline 1556
    {       key: "/api/sns/web/v1/homefeed",       url: "https://www.xiaohongshu.com/api/sns/web/v1/homefeed",
  • Network accessline 1557
    key: "/api/sns/web/v1/homefeed",       url: "https://www.xiaohongshu.com/api/sns/web/v1/homefeed",       method: "POST",
  • Network accessline 1558
    url: "https://www.xiaohongshu.com/api/sns/web/v1/homefeed",
  • Network accessline 1562
    {       key: "/api/sns/web/v2/user/me",       url: "https://www.xiaohongshu.com/api/sns/web/v2/user/me",
  • Network accessline 1563
    key: "/api/sns/web/v2/user/me",       url: "https://www.xiaohongshu.com/api/sns/web/v2/user/me",       method: "GET",
  • Network accessline 1564
    url: "https://www.xiaohongshu.com/api/sns/web/v2/user/me",
  • Network accessline 1579
    opts.headers = { "Content-Type": "application/json" };       }       const resp = await fetch(probe.url, opts);
  • Network accessline 1580
    }       const resp = await fetch(probe.url, opts);       let body = null;
  • Network accessline 1581
    const resp = await fetch(probe.url, opts);
  • Network accessline 1648
    const tabs = await chrome.tabs.query({     url: [       "https://www.xiaohongshu.com/*",
  • Network accessline 1649
    url: [       "https://www.xiaohongshu.com/*",       "https://xiaohongshu.com/*",
  • Network accessline 1650
    "https://www.xiaohongshu.com/*",
  • Network accessline 1651
    "https://xiaohongshu.com/*",
  • Network accessline 1652
    "https://creator.xiaohongshu.com/*",
  • Network accessline 1657
    const tab = await chrome.tabs.create({ url: "https://www.xiaohongshu.com/" });

extension/content.js

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 213
    const bytes = Uint8Array.from(atob(f.data), (c) => c.charCodeAt(0));

extension/interceptor.js

  • Executable scriptline 1
    Executable file

extension/manifest.json

  • Network accessline 14
    ],   "host_permissions": [     "https://*.xiaohongshu.com/*",
  • Network accessline 15
    "host_permissions": [     "https://*.xiaohongshu.com/*",     "https://xiaohongshu.com/*",
  • Network accessline 16
    "https://*.xiaohongshu.com/*",
  • Network accessline 17
    "https://xiaohongshu.com/*",
  • Network accessline 28
    {       "matches": [         "https://www.xiaohongshu.com/*",
  • Network accessline 29
    "matches": [         "https://www.xiaohongshu.com/*",         "https://xiaohongshu.com/*",
  • Network accessline 30
    "https://www.xiaohongshu.com/*",
  • Network accessline 31
    "https://xiaohongshu.com/*",
  • Network accessline 32
    "https://creator.xiaohongshu.com/*"
  • Network accessline 38
    {       "matches": [         "https://www.xiaohongshu.com/*",
  • Network accessline 39
    "matches": [         "https://www.xiaohongshu.com/*",         "https://xiaohongshu.com/*",
  • Network accessline 40
    "https://www.xiaohongshu.com/*",
  • Network accessline 41
    "https://xiaohongshu.com/*",
  • Network accessline 42
    "https://creator.xiaohongshu.com/*"

extension/netlogger.js

  • Executable scriptline 1
    Executable file
  • Network accessline 397
    // interceptor 可能拿到相对路径 (fetch("/api/foo")) 或绝对路径

extension/popup.js

  • Executable scriptline 1
    Executable file

scripts/bridge_server.py

  • Executable scriptline 1
    Executable file

scripts/cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

scripts/image_downloader.py

  • Executable scriptline 1
    Executable file
  • Network accessline 33
    self.save_path = save_path         os.makedirs(save_path, exist_ok=True)         self._session = requests.Session()
  • Network accessline 34
    os.makedirs(save_path, exist_ok=True)         self._session = requests.Session()         self._session.timeout = 30
  • Network accessline 35
    self._session = requests.Session()

scripts/run_lock.py

  • Executable scriptline 1
    Executable file

scripts/title_utils.py

  • Executable scriptline 1
    Executable file

scripts/xhs/__init__.py

  • Executable scriptline 1
    Executable file

scripts/xhs/bridge.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 229
    return base64.b64decode(result["data"])

scripts/xhs/cdp.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 619
    return _b64.b64decode(result.get("data", ""))
  • Network accessline 626
    self.host = host         self.port = port         self.base_url = f"http://{host}:{port}"
  • Network accessline 627
    self.port = port         self.base_url = f"http://{host}:{port}"         self._cdp: CDPClient | None = None
  • Network accessline 628
    self.base_url = f"http://{host}:{port}"
  • Network accessline 634
    resp = requests.get(f"{self.base_url}/json/version", timeout=5)
  • Network accessline 681
    resp = requests.get(f"{self.base_url}/json", timeout=5)
  • Network accessline 730
    resp = requests.get(f"{self.base_url}/json", timeout=5)

scripts/xhs/comment.py

  • Executable scriptline 1
    Executable file

scripts/xhs/cookies.py

  • Executable scriptline 1
    Executable file

scripts/xhs/errors.py

  • Executable scriptline 1
    Executable file

scripts/xhs/feed_detail.py

  • Executable scriptline 1
    Executable file
  • Network accessline 171
    logger.warning("触发小红书扫码验证,Level-1 重试:先回首页再访问目标...")         time.sleep(10)         page.navigate("https://www.xiaohongshu.com")
  • Network accessline 172
    time.sleep(10)         page.navigate("https://www.xiaohongshu.com")         page.wait_for_load()
  • Network accessline 173
    page.navigate("https://www.xiaohongshu.com")
  • Network accessline 190
    search_url = (                 "https://www.xiaohongshu.com/search_result?"                 + urllib.parse.urlencode({"keyword": keyword, "type": "51"})
  • Network accessline 191
    "https://www.xiaohongshu.com/search_result?"                 + urllib.parse.urlencode({"keyword": keyword, "type": "51"})             )

scripts/xhs/feeds.py

  • Executable scriptline 1
    Executable file

scripts/xhs/human.py

  • Executable scriptline 1
    Executable file

scripts/xhs/like_favorite.py

  • Executable scriptline 1
    Executable file

scripts/xhs/login.py

  • Executable scriptline 1
    Executable file
  • Network accessline 72
    profile_url = f"https://www.xiaohongshu.com{profile_href}"
  • Possible obfuscationline 142
    png_bytes = base64.b64decode(b64_str)
  • Network accessline 153
    import http.client
  • Network accessline 163
    try:         conn = http.client.HTTPSConnection(
  • Network accessline 164
    conn = http.client.HTTPSConnection(
  • Network accessline 205
    if qr_content:         image_url = (             "https://api.qrserver.com/v1/create-qr-code/"
  • Network accessline 206
    image_url = (             "https://api.qrserver.com/v1/create-qr-code/"             "?size=300x300&data="
  • Network accessline 207
    "https://api.qrserver.com/v1/create-qr-code/"             "?size=300x300&data="             + urllib.parse.quote(qr_content, safe="")

scripts/xhs/publish.py

  • Executable scriptline 1
    Executable file

scripts/xhs/publish_long_article.py

  • Executable scriptline 1
    Executable file

scripts/xhs/publish_video.py

  • Executable scriptline 1
    Executable file

scripts/xhs/risk_analyzer.py

  • Executable scriptline 1
    Executable file

scripts/xhs/search.py

  • Executable scriptline 1
    Executable file

scripts/xhs/selectors.py

  • Executable scriptline 1
    Executable file

scripts/xhs/types.py

  • Executable scriptline 1
    Executable file

scripts/xhs/urls.py

  • Executable scriptline 1
    Executable file
  • Network accessline 6
    EXPLORE_URL = "https://www.xiaohongshu.com/explore"
  • Network accessline 7
    HOME_URL = "https://www.xiaohongshu.com"
  • Network accessline 8
    PUBLISH_URL = "https://creator.xiaohongshu.com/publish/publish?source=official"
  • Network accessline 13
    [Credential-related source omitted]
  • Network accessline 14
    [Credential-related source omitted]
  • Network accessline 20
    params = urlencode({"keyword": keyword, "source": "web_explore_feed"})     return f"https://www.xiaohongshu.com/search_result?{params}"
  • Network accessline 21
    return f"https://www.xiaohongshu.com/search_result?{params}"
  • Network accessline 26
    return (         f"https://www.xiaohongshu.com/user/profile/{user_id}"
  • Network accessline 27
    f"https://www.xiaohongshu.com/user/profile/{user_id}"

scripts/xhs/user_profile.py

  • Executable scriptline 1
    Executable file

skills/xhs-publish/SKILL.md

  • Network accessline 130
    # URL 图片:直接传 URL,脚本自动下载 --images "https://example.com/pic1.jpg" "https://example.com/pic2.png"
  • Network accessline 131
    --images "https://example.com/pic1.jpg" "https://example.com/pic2.png"
  • Network accessline 136
    # 混合使用也支持 --images "https://example.com/pic1.jpg" "/abs/path/pic2.jpg"
  • Network accessline 137
    --images "https://example.com/pic1.jpg" "/abs/path/pic2.jpg"
  • Network accessline 140
    **禁止手动下载图片**:不要用 curl、wget 或其他工具先下载图片再传路径,直接传 URL 即可,否则会因路径猜测错误而失败。

tests/__init__.py

  • Executable scriptline 1
    Executable file

uv.lock

  • Network accessline 6
    name = "certifi" version = "2026.2.25" source = { registry = "https://pypi.org/simple" }
  • Network accessline 7
    version = "2026.2.25" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e8
  • Network accessline 8
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 9
    sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 
  • Network accessline 10
    wheels = [     { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af
  • Network accessline 11
    { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size 
  • Network accessline 15
    name = "charset-normalizer" version = "3.4.4" source = { registry = "https://pypi.org/simple" }
  • Network accessline 16
    version = "3.4.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256
  • Network accessline 17
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 18
    sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", 
  • Network accessline 19
    wheels = [     { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e675
  • Network accessline 20
    { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7f
  • Network accessline 21
    { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 22
    { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a
  • Network accessline 23
    { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 24
    { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e4
  • Network accessline 25
    { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8
  • Network accessline 26
    { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c494072
  • Network accessline 27
    { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e21
  • Network accessline 28
    { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013
  • Network accessline 29
    { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a
  • Network accessline 30
    { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53f
  • Network accessline 31
    { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a62
  • Network accessline 32
    { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae
  • Network accessline 33
    { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21
  • Network accessline 34
    { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34
  • Network accessline 35
    { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c
  • Network accessline 36
    { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c49116
  • Network accessline 37
    { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 38
    { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7
  • Network accessline 39
    { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 40
    { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437
  • Network accessline 41
    { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1
  • Network accessline 42
    { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d
  • Network accessline 43
    { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c
  • Network accessline 44
    { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6
  • Network accessline 45
    { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd7
  • Network accessline 46
    { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9b
  • Network accessline 47
    { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad
  • Network accessline 48
    { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d45
  • Network accessline 49
    { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3
  • Network accessline 50
    { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d33
  • Network accessline 51
    { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56
  • Network accessline 52
    { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443
  • Network accessline 53
    { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 54
    { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3
  • Network accessline 55
    { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 56
    { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2
  • Network accessline 57
    { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a
  • Network accessline 58
    { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a
  • Network accessline 59
    { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a
  • Network accessline 60
    { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f06
  • Network accessline 61
    { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142
  • Network accessline 62
    { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1db
  • Network accessline 63
    { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac
  • Network accessline 64
    { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906
  • Network accessline 65
    { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b1727
  • Network accessline 66
    { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4e
  • Network accessline 67
    { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36
  • Network accessline 68
    { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754f
  • Network accessline 69
    { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25
  • Network accessline 70
    { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7
  • Network accessline 71
    { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25
  • Network accessline 72
    { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f1
  • Network accessline 73
    { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e
  • Network accessline 74
    { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59
  • Network accessline 75
    { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c9362
  • Network accessline 76
    { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fd
  • Network accessline 77
    { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f
  • Network accessline 78
    { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f
  • Network accessline 79
    { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935
  • Network accessline 80
    { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283
  • Network accessline 81
    { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d81
  • Network accessline 82
    { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d1002
  • Network accessline 83
    { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455
  • Network accessline 84
    { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"
  • Network accessline 88
    name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" }
  • Network accessline 89
    version = "0.4.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb
  • Network accessline 90
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 91
    sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 276
  • Network accessline 92
    wheels = [     { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57a
  • Network accessline 93
    { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size
  • Network accessline 97
    name = "idna" version = "3.11" source = { registry = "https://pypi.org/simple" }
  • Network accessline 98
    version = "3.11" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0
  • Network accessline 99
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 100
    sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, 
  • Network accessline 101
    wheels = [     { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"
  • Network accessline 102
    { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008,
  • Network accessline 106
    name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 107
    version = "2.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c7
  • Network accessline 108
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 109
    sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20
  • Network accessline 110
    wheels = [     { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53
  • Network accessline 111
    { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 
  • Network accessline 115
    name = "packaging" version = "26.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 116
    version = "26.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351
  • Network accessline 117
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 118
    sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143
  • Network accessline 119
    wheels = [     { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a3
  • Network accessline 120
    { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 7
  • Network accessline 124
    name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 125
    version = "1.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b762
  • Network accessline 126
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 127
    sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412
  • Network accessline 128
    wheels = [     { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd47
  • Network accessline 129
    { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 205
  • Network accessline 133
    name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" }
  • Network accessline 134
    version = "2.19.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb24
  • Network accessline 135
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 136
    sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 49
  • Network accessline 137
    wheels = [     { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee
  • Network accessline 138
    { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 
  • Network accessline 142
    name = "pytest" version = "9.0.2" source = { registry = "https://pypi.org/simple" }
  • Network accessline 143
    version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 144
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 150
    { name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a
  • Network accessline 151
    ] sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 156
  • Network accessline 152
    sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 15689
  • Network accessline 153
    wheels = [     { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f87
  • Network accessline 154
    { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374
  • Network accessline 158
    name = "python-socks" version = "2.8.1" source = { registry = "https://pypi.org/simple" }
  • Network accessline 159
    version = "2.8.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/36/0b/cd77011c1bc01b76404f7aba07fca18aca02a19c7626e329b40201217624/python_socks-2.8.1.tar.gz", hash = "sha256:698da
  • Network accessline 160
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 161
    sdist = { url = "https://files.pythonhosted.org/packages/36/0b/cd77011c1bc01b76404f7aba07fca18aca02a19c7626e329b40201217624/python_socks-2.8.1.tar.gz", hash = "sha256:698daa9616d46dddaffe65b87db222f2902177a2d2b2c0b9a9361df607ab3687", size =
  • Network accessline 162
    wheels = [     { url = "https://files.pythonhosted.org/packages/15/fe/9a58cb6eec633ff6afae150ca53c16f8cc8b65862ccb3d088051efdfceb7/python_socks-2.8.1-py3-none-any.whl", hash = "sha256:28232739c4988064e725cdbcd15be194743dd23f1c910f784163365b
  • Network accessline 163
    { url = "https://files.pythonhosted.org/packages/15/fe/9a58cb6eec633ff6afae150ca53c16f8cc8b65862ccb3d088051efdfceb7/python_socks-2.8.1-py3-none-any.whl", hash = "sha256:28232739c4988064e725cdbcd15be194743dd23f1c910f784163365b9d7be035", size
  • Network accessline 167
    name = "requests" version = "2.32.5" source = { registry = "https://pypi.org/simple" }
  • Network accessline 168
    version = "2.32.5" source = { registry = "https://pypi.org/simple" } dependencies = [
  • Network accessline 169
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 174
    { name = "urllib3" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3a
  • Network accessline 175
    ] sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 
  • Network accessline 176
    sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 13
  • Network accessline 177
    wheels = [     { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161
  • Network accessline 178
    { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 
  • Network accessline 182
    name = "ruff" version = "0.15.4" source = { registry = "https://pypi.org/simple" }
  • Network accessline 183
    version = "0.15.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/da/31/d6e536cdebb6568ae75a7f00e4b4819ae0ad2640c3604c305a0428680b0c/ruff-0.15.4.tar.gz", hash = "sha256:3412195319e
  • Network accessline 184
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 185
    sdist = { url = "https://files.pythonhosted.org/packages/da/31/d6e536cdebb6568ae75a7f00e4b4819ae0ad2640c3604c305a0428680b0c/ruff-0.15.4.tar.gz", hash = "sha256:3412195319e42d634470cc97aa9803d07e9d5c9223b99bcb1518f0c725f26ae1", size = 456955
  • Network accessline 186
    wheels = [     { url = "https://files.pythonhosted.org/packages/f2/82/c11a03cfec3a4d26a0ea1e571f0f44be5993b923f905eeddfc397c13d360/ruff-0.15.4-py3-none-linux_armv6l.whl", hash = "sha256:a1810931c41606c686bae8b5b9a8072adac2f611bb433c0ba476ac
  • Network accessline 187
    { url = "https://files.pythonhosted.org/packages/f2/82/c11a03cfec3a4d26a0ea1e571f0f44be5993b923f905eeddfc397c13d360/ruff-0.15.4-py3-none-linux_armv6l.whl", hash = "sha256:a1810931c41606c686bae8b5b9a8072adac2f611bb433c0ba476acba17a332e0", si
  • Network accessline 188
    { url = "https://files.pythonhosted.org/packages/ce/5d/6a1f271f6e31dffb31855996493641edc3eef8077b883eaf007a2f1c2976/ruff-0.15.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5a1632c66672b8b4d3e1d1782859e98d6e0b4e70829530666644286600a339
  • Network accessline 189
    { url = "https://files.pythonhosted.org/packages/b1/d8/0fab9f8842b83b1a9c2bf81b85063f65e93fb512e60effa95b0be49bfc54/ruff-0.15.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a4386ba2cd6c0f4ff75252845906acc7c7c8e1ac567b7bc3d373686ac8c222ba
  • Network accessline 190
    { url = "https://files.pythonhosted.org/packages/85/cc/cc220fd9394eff5db8d94dec199eec56dd6c9f3651d8869d024867a91030/ruff-0.15.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2496488bdfd3732747558b6f95ae427ff066
  • Network accessline 191
    { url = "https://files.pythonhosted.org/packages/fa/0f/bced38fa5cf24373ec767713c8e4cadc90247f3863605fb030e597878661/ruff-0.15.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f1c4893841ff2d54cbda1b2860fa3260173df5
  • Network accessline 192
    { url = "https://files.pythonhosted.org/packages/2b/90/58a1802d84fed15f8f281925b21ab3cecd813bde52a8ca033a4de8ab0e7a/ruff-0.15.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:820b8766bd65503b6c30aaa6331e8ef3a6e564f7999
  • Network accessline 193
    { url = "https://files.pythonhosted.org/packages/d2/ac/b7ad36703c35f3866584564dc15f12f91cb1a26a897dc2fd13d7cb3ae1af/ruff-0.15.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9fb74bab47139c1751f900f857fa50398725
  • Network accessline 194
    { url = "https://files.pythonhosted.org/packages/93/3d/3eb2f47a39a8b0da99faf9c54d3eb24720add1e886a5309d4d1be73a6380/ruff-0.15.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f80c98765949c518142b3a50a5db89343aa90f2c2
  • Network accessline 195
    { url = "https://files.pythonhosted.org/packages/ff/90/bf134f4c1e5243e62690e09d63c55df948a74084c8ac3e48a88468314da6/ruff-0.15.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451a2e224151729b3b6c9ffb36aed9091b2996f
  • Network accessline 196
    { url = "https://files.pythonhosted.org/packages/b5/e5/a64d27688789b06b5d55162aafc32059bb8c989c61a5139a36e1368285eb/ruff-0.15.4-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a8f157f2e583c513c4f5f896163a93198297371f34c04220daf40d133fd
  • Network accessline 197
    { url = "https://files.pythonhosted.org/packages/f1/f6/32d1dcb66a2559763fc3027bdd65836cad9eb09d90f2ed6a63d8e9252b02/ruff-0.15.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:917cc68503357021f541e69b35361c99387cdbbf99bd0ea4aa6f28ca99ff
  • Network accessline 198
    { url = "https://files.pythonhosted.org/packages/ff/92/22d1ced50971c5b6433aed166fcef8c9343f567a94cf2b9d9089f6aa80fe/ruff-0.15.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e9737c8161da79fd7cfec19f1e35620375bd8b2a50c3e77fa3d2c16f57410
  • Network accessline 199
    { url = "https://files.pythonhosted.org/packages/e6/f4/7c20aec3143837641a02509a4668fb146a642fd1211846634edc17eb5563/ruff-0.15.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:291258c917539e18f6ba40482fe31d6f5ac023994ee11d7bdafd716f2aab8a6
  • Network accessline 200
    { url = "https://files.pythonhosted.org/packages/d0/09/6d2f7586f09a16120aebdff8f64d962d7c4348313c77ebb29c566cefc357/ruff-0.15.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3f83c45911da6f2cd5936c436cf86b9f09f09165f033a99dcf7477e34041c
  • Network accessline 201
    { url = "https://files.pythonhosted.org/packages/1b/fa/2ef715a1cd329ef47c1a050e10dee91a9054b7ce2fcfdd6a06d139afb7ec/ruff-0.15.4-py3-none-win32.whl", hash = "sha256:65594a2d557d4ee9f02834fcdf0a28daa8b3b9f6cb2cb93846025a36db47ef22", size = 10
  • Network accessline 202
    { url = "https://files.pythonhosted.org/packages/d0/a8/c688ef7e29983976820d18710f955751d9f4d4eb69df658af3d006e2ba3e/ruff-0.15.4-py3-none-win_amd64.whl", hash = "sha256:04196ad44f0df220c2ece5b0e959c2f37c777375ec744397d21d15b50a75264f", size 
  • Network accessline 203
    { url = "https://files.pythonhosted.org/packages/3e/0a/9e1be9035b37448ce2e68c978f0591da94389ade5a5abafa4cf99985d1b2/ruff-0.15.4-py3-none-win_arm64.whl", hash = "sha256:60d5177e8cfc70e51b9c5fad936c634872a74209f934c1e79107d11787ad5453", size 
  • Network accessline 207
    name = "urllib3" version = "2.6.3" source = { registry = "https://pypi.org/simple" }
  • Network accessline 208
    version = "2.6.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b68849
  • Network accessline 209
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 210
    sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 4355
  • Network accessline 211
    wheels = [     { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0a
  • Network accessline 212
    { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 13
  • Network accessline 216
    name = "websockets" version = "16.0" source = { registry = "https://pypi.org/simple" }
  • Network accessline 217
    version = "16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e
  • Network accessline 218
    source = { registry = "https://pypi.org/simple" }
  • Network accessline 219
    sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 17
  • Network accessline 220
    wheels = [     { url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6
  • Network accessline 221
    { url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a
  • Network accessline 222
    { url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af5
  • Network accessline 223
    { url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becd
  • Network accessline 224
    { url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29
  • Network accessline 225
    { url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cf
  • Network accessline 226
    { url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c7
  • Network accessline 227
    { url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c2
  • Network accessline 228
    { url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6", si
  • Network accessline 229
    { url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac"
  • Network accessline 230
    { url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14
  • Network accessline 231
    { url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee
  • Network accessline 232
    { url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd
  • Network accessline 233
    { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492
  • Network accessline 234
    { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e033487
  • Network accessline 235
    { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb
  • Network accessline 236
    { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c1
  • Network accessline 237
    { url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", si
  • Network accessline 238
    { url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea"
  • Network accessline 239
    { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96
  • Network accessline 240
    { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b2771
  • Network accessline 241
    { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc5
  • Network accessline 242
    { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c
  • Network accessline 243
    { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc
  • Network accessline 244
    { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b2
  • Network accessline 245
    { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd09369
  • Network accessline 246
    { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", si
  • Network accessline 247
    { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156"
  • Network accessline 248
    { url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb448
  • Network accessline 249
    { url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d6
  • Network accessline 250
    { url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d
  • Network accessline 251
    { url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67
  • Network accessline 252
    { url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a
  • Network accessline 253
    { url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344
  • Network accessline 254
    { url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd80
  • Network accessline 255
    { url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", si
  • Network accessline 256
    { url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d"
  • Network accessline 257
    { url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc
  • Network accessline 258
    { url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401
  • Network accessline 259
    { url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf
  • Network accessline 260
    { url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b
  • Network accessline 261
    { url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284
  • Network accessline 262
    { url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681
  • Network accessline 263
    { url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc80
  • Network accessline 264
    { url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", s
  • Network accessline 265
    { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd
  • Network accessline 266
    { url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af1
  • Network accessline 267
    { url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b748137642
  • Network accessline 268
    { url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1
  • Network accessline 269
    { url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:
  • Network accessline 270
    { url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78
  • Network accessline 271
    { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 

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.

Declared and executed: 8 facts
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionextension/background.js:473High confidence
  • Contacts xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionextension/background.js:1227High confidence
  • Contacts creator.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionextension/background.js:1652High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/xhs/feed_detail.py:173High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/xhs/login.py:72High confidence
  • Contacts api.qrserver.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/xhs/login.py:207High confidence
  • Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/xhs/urls.py:6High confidence
  • Contacts creator.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/xhs/urls.py:8High confidence
Signal confidence: 144 facts

and 94 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativePath CLAUDE.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.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.

autoclaw-cc/xiaohongshu-skills: #528 on hotskills, 2k stars

[![autoclaw-cc/xiaohongshu-skills on hotskills](https://hotskills.dev/badge/autoclaw-cc-xiaohongshu-skills.svg)](https://hotskills.dev/skill/autoclaw-cc-xiaohongshu-skills/)