Skip to main content
Glama
1013503897

boss-cli

by 1013503897

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 --json fü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

t2

der t2 Request-Header – dein Login-Token

client_info

der client_info-Query-Parameter (ein JSON-Blob: Modell / uniqid / did …)

uniqid

innerhalb von client_info

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_defaults

session.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_server

Registriere 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-trip

Aufbau

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 --json fü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

t2

der t2 im Request-Header – dein Login-Token

client_info

der Query-Parameter client_info (ein JSON-Blob: Modell / uniqid / did …)

uniqid

innerhalb von client_info

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_server

Registriere 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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP 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 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Unified 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