boss-cli
boss-cli
English | 中文
Durchsuche BOSS直聘 (com.hpbr.bosszhipin)-Stellenangebote von deinem Terminal oder von einem KI-Agenten aus – geräteunabhängig,
reines Python, kein Telefon/Emulator nötig. Es reproduziert die native Anfragesignatur der App
(libyzwg.so) in Python, sodass eine einfache HTTP-Anfrage vom Server akzeptiert wird.
$ boss search "安卓逆向" --city 北京,上海,杭州
# 12 jobs for '安卓逆向' (cities=['北京', '上海', '杭州'], page=1)
- [北京] 资深Android逆向与风控对抗专家 | 70-100K·13薪 | PureblueAI
- [上海] 移动安全/逆向工程师 | 30-60K | ...
- [杭州] android逆向开发 | 50-75K | 小算科技
...Forschungs-/Bildungsprojekt. Es sucht mit dem Token deines eigenen angemeldeten Kontos; du bist dafür verantwortlich, die Nutzungsbedingungen von BOSS直聘 einzuhalten. Überlaste die API nicht.
Funktionen
Geräteunabhängige Suche – keine Telefon-, Emulator- oder unidbg-Laufzeit; nur Python + dein Session-Token.
Mehrere Städte in einem Aufruf –
--city 北京,上海,杭州, nach Name oder Code.Suchwortfilter –
--filter 远程/--filter 兼职behält nur passende Jobs (Titel / Labels / Firma).Saubere oder JSON-Ausgabe – menschenlesbare Liste oder
--jsonfür Skripte.MCP-Server – Suche als Tool (
boss_search) für Claude / jeden MCP-Client bereitstellen.
Related MCP server: trackly-cli
Installation
pip install -r requirements.txt # lz4, requests (mcp only needed for the MCP server)Session abrufen (einmalig)
Der Client benötigt drei Dinge von einer angemeldeten BOSS直聘-App auf einem Gerät, das du kontrollierst:
Feld | Herkunft |
| der |
| der |
| innerhalb von |
Fange eine GET https://api5.zhipin.com/api/batch/requests-Anfrage der App mit einem beliebigen HTTPS-Interceptor ab (Reqable / Charles / mitmproxy; verwende ein Frida-SSL-Unpin-Skript, falls die App Zertifikat-Pinning nutzt), und kopiere diese Werte dann in session.local.json:
cp session.example.json session.local.json # then paste your t2 / client_info / uniqid / cardlist_defaultssession.local.json ist per .gitignore ausgenommen (es enthält deinen Token). t2 läuft ab – wenn Suchen invalid auth zurückgeben, hol dir auf dieselbe Weise ein neues t2.
Verwendung
# by city name or code, one or several
boss search "Python" # default city from your session
boss search "数据分析" --city 上海
boss search "安卓逆向" --city 北京,上海,杭州 # multi-city, results tagged [city]
# filter / paginate / cap
boss search "逆向" --city 北京,上海 --filter 远程 # only jobs mentioning 远程 (remote)
boss search "Golang" --page 2 --limit 20
boss search "算法" --json # parsed jobs as JSON
# run without installing (module form)
python -m bosscli.cli search "AIGC" --city 深圳Optionen: --city (Name/Code, kommagetrennt) · --filter <text> · --page N · --sort -1 ·
--limit N · --json · --token <t2> (Überschreibung) · --session <path>.
Eingebaute Städtenamen: 全国 / 北京 / 上海 / 广州 / 深圳 / 杭州 / 成都 / 南京 / 武汉 / 西安 / 苏州 / 天津 / 长沙 / 重庆 / 郑州 / 厦门 (andere: gib den rohen Code an).
MCP-Server
BOSS_SESSION=./session.local.json python -m bosscli.mcp_serverRegistriere ihn in deinem MCP-Client (z. B. ~/.claude.json); das Tool ist
boss_search(query, city?, page?, sort?).
So funktioniert es (Kurzfassung)
Die Suche von BOSS直聘 läuft über einen Batch-Endpunkt, dessen Parameter zwei Manipulationsschutz-Werte tragen – sp
(ein verschlüsselter Parameter-Blob) und sig (eine Signatur) – beide werden von der nativen Bibliothek
libyzwg.so erzeugt. Dieses Projekt reproduziert das Signieren/Verschlüsseln dieser Bibliothek in reinem Python
(bosscli/yzwg.py), baut die Batch-Anfrage zusammen (bosscli/signer.py), sendet sie und entschlüsselt die
Antwort (bosscli/client.py). Die Korrektheit wird durch bytegenaue Tests gegen reale Aufzeichnungen abgesichert
(tests/). Das ist der ganze Trick: Ist die Signatur erst einmal reproduziert, ist die Suche nur ein HTTP-Aufruf.
python tests/test_yzwg.py # native crypto — byte-exact vs real-device captures
python tests/test_signer.py # request assembly round-tripAufbau
bosscli/yzwg.py signing / encryption primitives (pure Python)
bosscli/signer.py batch-request assembly
bosscli/client.py search: build → send → decrypt → parse
bosscli/cli.py the `boss search ...` CLI
bosscli/mcp_server.py MCP wrapper (tool: boss_search)
tests/ byte-exact regression tests + fixtures
session.example.json template for your session中文
English | 中文
Durchsuche BOSS直聘(com.hpbr.bosszhipin)-Stellenangebote im Terminal oder über einen KI-Agenten – reines Python, geräteunabhängig, ohne dass ein Telefon/Emulator benötigt wird.
Es reproduziert die native Anforderungssignatur-Bibliothek der App (libyzwg.so) in Python, sodass eine normale HTTP-Anfrage vom Server akzeptiert wird.
$ boss search "安卓逆向" --city 北京,上海,杭州
# 12 jobs for '安卓逆向' (cities=['北京', '上海', '杭州'], page=1)
- [北京] 资深Android逆向与风控对抗专家 | 70-100K·13薪 | PureblueAI
- [杭州] android逆向开发 | 50-75K | 小算科技
...Forschungs-/Lernzweck. Es sucht mit dem Token deines eigenen angemeldeten Kontos; bitte beachte die Nutzungsbedingungen von BOSS直聘 und überlaste die API nicht.
Funktionen
Geräteunabhängige Suche – keine Telefon-/Emulator-/unidbg-Laufzeit, nur Python + dein Session-Token.
Mehrere Städte mit einem Befehl –
--city 北京,上海,杭州, unterstützt Städtenamen oder Stadtcodes.Suchwortfilter –
--filter 远程/--filter 兼职, behält nur passende Jobs (Titel/Labels/Firma).Text- oder JSON-Ausgabe – lesbare Liste oder
--jsonfür Skripte.MCP-Dienst – stellt die Suche als Tool (
boss_search) für Claude / jeden MCP-Client bereit.
Installation
pip install -r requirements.txt # lz4、requests(MCP 服务另需 mcp 包)Session abrufen (einmalig)
Der Client benötigt drei Dinge von einem dir gehörenden, angemeldeten BOSS直聘-Gerät:
Feld | Herkunft |
| der |
| der Query-Parameter |
| innerhalb von |
Fange mit einem beliebigen HTTPS-Abfangtool (Reqable / Charles / mitmproxy; falls die App Zertifikat-Pinning verwendet, richte ein Frida-SSL-Unpin-Skript ein)
eine von der App gesendete GET https://api5.zhipin.com/api/batch/requests-Anfrage ab und trage die obigen Werte in session.local.json ein:
cp session.example.json session.local.json # 再把你的 t2 / client_info / uniqid / cardlist_defaults 粘进去session.local.json ist per .gitignore ausgenommen (es enthält deinen Token). t2 läuft ab – sobald Suchen invalid auth zurückgeben, schnapp dir einfach auf dieselbe Weise ein neues.
Verwendung
# 按城市名或城市码,单个或多个
boss search "Python" # 用 session 里的默认城市
boss search "数据分析" --city 上海
boss search "安卓逆向" --city 北京,上海,杭州 # 多城市,结果带 [城市] 标签
# 筛选 / 翻页 / 限量
boss search "逆向" --city 北京,上海 --filter 远程 # 只看提到“远程”的岗
boss search "Golang" --page 2 --limit 20
boss search "算法" --json # 解析后的职位 JSON
# 不安装、直接模块方式跑
python -m bosscli.cli search "AIGC" --city 深圳Parameter: --city (Städtename/-code, kommagetrennt) · --filter <文本> · --page N · --sort -1 ·
--limit N · --json · --token <t2> (temporäre Überschreibung) · --session <路径>.
Eingebaute Städtenamen: 全国 / 北京 / 上海 / 广州 / 深圳 / 杭州 / 成都 / 南京 / 武汉 / 西安 / 苏州 / 天津 / 长沙 / 重庆 / 郑州 / 厦门 (andere Städte: übergib einfach den Stadtcode).
MCP-Dienst
BOSS_SESSION=./session.local.json python -m bosscli.mcp_serverRegistriere ihn in deinem MCP-Client (z. B. ~/.claude.json); der Toolname ist boss_search(query, city?, page?, sort?).
So funktioniert es (Kurzfassung)
Die Suche von BOSS直聘 läuft über einen Batch-Endpunkt, dessen Parameter zwei Manipulationsschutz-Werte enthalten – sp (verschlüsselter Parameter-String) und sig (Signatur) –, die beide von der nativen Bibliothek
libyzwg.so erzeugt werden. Dieses Projekt reproduziert das Signieren/Verschlüsseln dieser Bibliothek in reinem Python (bosscli/yzwg.py), baut die Batch-Anfrage zusammen
(bosscli/signer.py), sendet sie und entschlüsselt die Antwort (bosscli/client.py). Die Korrektheit wird durch bytegenaue Tests gegen echte Aufzeichnungen abgesichert
(tests/). Das ist der Kern: Ist die Signatur erst einmal reproduziert, ist die Suche nur eine normale HTTP-Anfrage.
Haftungsausschluss
Nur für Sicherheitsforschung und Lernzwecke. Nicht für Nutzungen verwenden, die gegen die Nutzungsbedingungen von BOSS直聘 oder geltende Gesetze verstoßen; sämtliche Folgen aus der Nutzung dieses Projekts trägt der Verwender selbst.
This server cannot be deployed
Maintenance
Related MCP Connectors
Public MCP server for discovering open jobs. Search, filter, and get application links.
MCP server for Firecrawl — web search, scraping, and biomedical/arXiv paper search.
GetJobzi MCP server for job search, application tracking, and career forecasting.
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal MCP server for BOSS Zhipin workflows. Exposes 49 tools for job search, welfare filtering, recruiter messaging, pipeline tracking, and resume optimization for AI agents.77464 PyPI2,040MIT

trackly-cliofficial
AlicenseNot gradedqualityAmaintenanceMCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.379 npm3MIT- AlicenseNot gradedqualityDmaintenanceUnified job search MCP server that aggregates live listings from multiple job boards with deduplication, enabling AI agents to find and filter jobs by keyword and location.MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server enables AI agents to interact with recruitment platforms like BOSS直聘, 猎聘, and Moka through a Chrome extension via WebSocket. It provides tools to detect platforms, fetch candidate lists, and test extension connectivity.2-