# marwanainaili2307-web/sheerid-recon architecture

> Architecture diagram of the GitHub repository marwanainaili2307-web/sheerid-recon, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/marwanainaili2307-web/sheerid-recon
- Repository: https://github.com/marwanainaili2307-web/sheerid-recon

## Overview

This repository is a SheerID student-verification and Google One offer-reconnaissance toolkit, with several alternative automation entry points rather than one shared application pipeline. The principal workflow gathers student and institution details, uses browser/CDP automation for the verification page and CAPTCHA, submits verification data, uploads a supporting document, then polls status. A separate browser extension injects an offer configuration into Google checkout and displays a checkout price warning. The README documents organization search, fingerprinting, initialization and i18n; sampled code only confirms some related calls, so unsampled links are omitted.

Main entry points: [`hybrid_automation.py`](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/hybrid_automation.py) (API hybrid flow), [`verify_runner.py`](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/verify_runner.py) (Full runner), [`sheerid_automation.py`](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/sheerid_automation.py) (SheerID automation), [`sheerid_browser_automation.py`](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/sheerid_browser_automation.py) (Browser verification)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_verification["Verification automation"]
  node_full_runner["Full runner<br/>[verify_runner.py]"]
  node_api_hybrid["API hybrid flow"]
  node_sheerid_flow["SheerID automation"]
  node_browser_flow["Browser verification"]
  node_doc_upload["Document upload<br/>[docupload_only.py]"]
  node_org_search["Organization search"]
  node_status_poll["Status polling<br/>[verify_runner.py]"]
end

subgraph group_browser["Browser control"]
  node_browser_use["Cloud browser flow"]
  node_cdp_flow["CDP automation<br/>[cdp_automation.py]"]
  node_cdp_v2["CDP form control"]
  node_capture["Request capture<br/>[capture_request.py]"]
end

subgraph group_extension["Offer extension"]
  node_extension_popup["Extension controls<br/>[popup.js]"]
  node_content_script["Page messaging<br/>[content.js]"]
  node_offer_injector["Offer injection<br/>[inject.js]"]
  node_price_guard["Price guard<br/>[play_guard.js]"]
end

subgraph group_services["External services"]
  node_browser_service["Browser-use API"]
  node_sheerid_service["SheerID API"]
  node_org_service["Org search API"]
  node_captcha_service["2Captcha"]
  node_google_checkout["Google checkout"]
end

node_operator(("Operator"))

node_operator -->|"runs"| node_full_runner
node_full_runner -->|"creates browser"| node_browser_service
node_full_runner -->|"checks status"| node_sheerid_service
node_full_runner -->|"attaches document"| node_doc_upload
node_full_runner -->|"polls status"| node_status_poll
node_api_hybrid -->|"creates browser"| node_browser_service
node_api_hybrid -->|"searches institutions"| node_org_service
node_api_hybrid -->|"submits verification"| node_sheerid_service
node_api_hybrid -->|"gets fingerprint"| node_sheerid_service
node_api_hybrid -->|"reads status"| node_sheerid_service
node_sheerid_flow -->|"gets fingerprint"| node_sheerid_service
node_sheerid_flow -->|"requests solution"| node_captcha_service
node_browser_flow -->|"requests solution"| node_captcha_service
node_browser_flow -->|"injects offer"| node_google_checkout
node_browser_use -->|"creates session"| node_browser_service
node_cdp_flow -->|"creates browser"| node_browser_service
node_cdp_flow -->|"searches institutions"| node_org_service
node_cdp_v2 -->|"creates browser"| node_browser_service
node_capture -.->|"attaches CDP"| node_browser_service
node_extension_popup -->|"sends settings"| node_content_script
node_content_script -->|"posts configuration"| node_offer_injector
node_offer_injector -->|"rewrites requests"| node_google_checkout
node_price_guard -.->|"checks terms"| node_google_checkout

click node_full_runner "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/verify_runner.py"
click node_api_hybrid "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/hybrid_automation.py"
click node_sheerid_flow "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/sheerid_automation.py"
click node_browser_flow "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/sheerid_browser_automation.py"
click node_browser_use "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/browser_use_automation.py"
click node_cdp_flow "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/cdp_automation.py"
click node_cdp_v2 "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/cdp_automation_v2.py"
click node_capture "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/capture_request.py"
click node_doc_upload "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/docupload_only.py"
click node_org_search "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/hybrid_automation.py"
click node_status_poll "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/verify_runner.py"
click node_extension_popup "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/popup.js"
click node_content_script "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/content.js"
click node_offer_injector "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/inject.js"
click node_price_guard "https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/play_guard.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_full_runner,node_api_hybrid,node_sheerid_flow,node_browser_flow,node_doc_upload,node_org_search,node_status_poll toneBlue
class node_browser_use,node_cdp_flow,node_cdp_v2,node_capture toneAmber
class node_extension_popup,node_content_script,node_offer_injector,node_price_guard toneMint
class node_browser_service,node_sheerid_service,node_org_service,node_captcha_service,node_google_checkout toneRose
class node_operator toneIndigo
```

## Components

### Verification automation

- [Full runner](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/verify_runner.py): `verify_runner.py`
- [API hybrid flow](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/hybrid_automation.py): `hybrid_automation.py`
- [SheerID automation](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/sheerid_automation.py): `sheerid_automation.py`
- [Browser verification](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/sheerid_browser_automation.py): `sheerid_browser_automation.py`
- [Document upload](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/docupload_only.py): `docupload_only.py`
- [Organization search](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/hybrid_automation.py): `hybrid_automation.py`
- [Status polling](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/verify_runner.py): `verify_runner.py`

### Browser control

- [Cloud browser flow](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/browser_use_automation.py): `browser_use_automation.py`
- [CDP automation](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/cdp_automation.py): `cdp_automation.py`
- [CDP form control](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/cdp_automation_v2.py): `cdp_automation_v2.py`
- [Request capture](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/capture_request.py): `capture_request.py`

### Offer extension

- [Extension controls](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/popup.js): `extension/popup.js`
- [Page messaging](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/content.js): `extension/content.js`
- [Offer injection](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/inject.js): `extension/inject.js`
- [Price guard](https://github.com/marwanainaili2307-web/sheerid-recon/blob/main/extension/play_guard.js): `extension/play_guard.js`

### External services

- **Browser-use API**
- **SheerID API**
- **Org search API**
- **2Captcha**
- **Google checkout**

### Other components

- **Operator**

## Connections

- Operator → Full runner: runs (evidence: `verify_runner.py`)
- Full runner → Browser-use API: creates browser (evidence: `verify_runner.py`)
- Full runner → SheerID API: checks status (evidence: `verify_runner.py`)
- Full runner → Document upload: attaches document (evidence: `verify_runner.py`)
- Full runner → Status polling: polls status (evidence: `verify_runner.py`)
- API hybrid flow → Browser-use API: creates browser (evidence: `hybrid_automation.py`)
- API hybrid flow → Org search API: searches institutions (evidence: `hybrid_automation.py`)
- API hybrid flow → SheerID API: submits verification (evidence: `hybrid_automation.py`)
- API hybrid flow → SheerID API: gets fingerprint (evidence: `hybrid_automation.py`)
- API hybrid flow → SheerID API: reads status (evidence: `hybrid_automation.py`)
- SheerID automation → SheerID API: gets fingerprint (evidence: `sheerid_automation.py`)
- SheerID automation → 2Captcha: requests solution (evidence: `sheerid_automation.py`)
- Browser verification → 2Captcha: requests solution (evidence: `sheerid_browser_automation.py`)
- Browser verification → Google checkout: injects offer (evidence: `sheerid_browser_automation.py`)
- Cloud browser flow → Browser-use API: creates session (evidence: `browser_use_automation.py`)
- CDP automation → Browser-use API: creates browser (evidence: `cdp_automation.py`)
- CDP automation → Org search API: searches institutions (evidence: `cdp_automation.py`)
- CDP form control → Browser-use API: creates browser (evidence: `cdp_automation_v2.py`)
- Request capture → Browser-use API: attaches CDP
- Extension controls → Page messaging: sends settings (evidence: `extension/popup.js`)
- Page messaging → Offer injection: posts configuration (evidence: `extension/content.js`)
- Offer injection → Google checkout: rewrites requests (evidence: `README.md`)
- Price guard → Google checkout: checks terms
