Metadata-Version: 2.4
Name: antidetect-importer
Version: 0.4.1
Summary: AdsPower & GoLogin to Multilogin — parse exports, audit gaps, MLX profile/create push. CLI: antidetect-import.
Project-URL: Homepage, https://github.com/antidetect-importer/antidetect-importer
Project-URL: Documentation, https://github.com/antidetect-importer/antidetect-importer#readme
Project-URL: Repository, https://github.com/antidetect-importer/antidetect-importer
Project-URL: Issues, https://github.com/antidetect-importer/antidetect-importer/issues
Author: antidetect-importer contributors
License-Expression: MIT
License-File: LICENSE
Keywords: adspower-import,adspower-to-multilogin,antidetect-browser,backup-normalize,competitor-migration,dolphin-anty,dolphin-migration,export-parser,gap-audit,gologin-export,gologin-to-multilogin,import-toolkit,incogniton,mlx-migration,multilogin-migration,parse-export,profile-import
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: click>=8.1
Requires-Dist: pydantic>=2.5
Provides-Extra: dev
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: pytest-httpx>=0.34; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: rich>=13.0; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Provides-Extra: mlx
Requires-Dist: httpx>=0.27; extra == 'mlx'
Requires-Dist: rich>=13.0; extra == 'mlx'
Description-Content-Type: text/markdown

# antidetect-importer

**AdsPower & GoLogin to Multilogin migration** — parse competitor exports, audit gaps, push MLX profile/create.

[![PyPI version](https://img.shields.io/pypi/v/antidetect-importer.svg)](https://pypi.org/project/antidetect-importer/)
[![Python versions](https://img.shields.io/pypi/pyversions/antidetect-importer.svg)](https://pypi.org/project/antidetect-importer/)
[![License: MIT](https://img.shields.io/pypi/l/antidetect-importer.svg)](https://pypi.org/project/antidetect-importer/)

```bash
pip install antidetect-importer
antidetect-import parse export.csv --format adspower -o raw.json
```

CLI: **`antidetect-import`** · Python **3.10+** · optional **`[mlx]`** for Launcher helpers


> **Coupon hubs:** Verified MLX deals (`SAAS50` browser / `MIN50` cloud phone) — [anti-detect.github.io](https://anti-detect.github.io/) · [SaaSVerdict](https://saasverdict.com/). Get latest codes before checkout. Core CLI works without a vendor account. [Affiliate disclosure](docs/AFFILIATE.md).

**AdsPower & GoLogin to Multilogin migration** — parse competitor exports, audit gaps, push MLX `profile/create`.

Parse **AdsPower**, **Dolphin Anty**, **Incogniton**, and **GoLogin** profile exports into a neutral JSON schema, then normalize to **MLX `profile/create`** payloads.

Built for migration workflows: audit what transfers, fill gaps, push profiles to Multilogin.

## Problem

Competitor antidetect tools export profiles in incompatible CSV/JSON shapes. MLX `profile/create` expects a specific payload — timezone, proxy, UA, and masking flags do not map 1:1. Manual migration across hundreds of profiles is error-prone and hides gaps (missing cookies, startup URLs, credentials).

## Install

```bash
pip install antidetect-importer

# MLX push helper
pip install antidetect-importer[mlx]
```

## Quick start

```bash
antidetect-import parse tests/fixtures/adspower/export.csv --format adspower -o raw.json
antidetect-import report raw.json --show-missing-fields
antidetect-import normalize --input raw.json -o mlx-ready.json --folder-id YOUR-FOLDER-UUID
antidetect-import mlx-push --input mlx-ready.json   # requires MLX_TOKEN
```

## CLI

```bash
# 1. Parse vendor export → neutral JSON
antidetect-import parse tests/fixtures/adspower/export.csv --format adspower -o raw.json
antidetect-import parse tests/fixtures/dolphin/backup.json --format dolphin -o raw.json
antidetect-import parse tests/fixtures/incogniton/export.json --format incogniton -o raw.json
antidetect-import parse tests/fixtures/gologin/export.json --format gologin -o raw.json

# 2. Migration readiness report (table when gaps exist)
antidetect-import report raw.json --show-missing-fields

# 3. Normalize → MLX-ready JSON
antidetect-import normalize --input raw.json -o mlx-ready.json --folder-id YOUR-FOLDER-UUID

# 4. Push to MLX Cloud (optional)
export MLX_TOKEN=your_bearer_token
export MLX_FOLDER_ID=your-folder-uuid
antidetect-import mlx-push --input mlx-ready.json

# Fail fast on first API error (default: continue and print summary table)
antidetect-import mlx-push --input mlx-ready.json --fail-fast
```

`mlx-push` reads the `profiles` array from `mlx-ready.json`, maps **name**, **proxy**, **timezone**, **ua**, and **notes** into MLX `profile/create` payloads, and prints a **rich summary table** listing created and failed profiles (`--continue-on-error`, default on).

## Neutral schema

See **[docs/NEUTRAL_SCHEMA.md](docs/NEUTRAL_SCHEMA.md)** for the full field reference.

Each profile in `raw.json` includes identity (`name`, `source`, `source_id`), locale (`timezone`, `language`, `user_agent`), `screen`, `proxy`, `cookies`, vendor `extras`, and parser `warnings`.

MLX normalization maps these to `POST /profile/create` with default masking flags. Sidecar fields `_cookies`, `_startup_urls`, and `_credentials` are preserved for follow-up import (cookies via Launcher API or `session-bundle-kit`).

## Supported migrations

| Vendor | Supported | `--format` | Synthetic fixture |
|--------|-----------|------------|-------------------|
| AdsPower | yes | `adspower` | `tests/fixtures/adspower/export.csv` |
| Dolphin Anty | yes | `dolphin` | `tests/fixtures/dolphin/backup.json` |
| Incogniton | yes | `incogniton` | `tests/fixtures/incogniton/export.json` |
| GoLogin | yes | `gologin` | `tests/fixtures/gologin/export.json` |

Typical export sources: AdsPower bulk CSV; Dolphin API `{ "data": [...] }`; Incogniton
`profileData` JSON; GoLogin REST profile array (see [docs/NEUTRAL_SCHEMA.md](docs/NEUTRAL_SCHEMA.md)).

Fixtures are **synthetic and anonymized** — see [tests/fixtures/README.md](tests/fixtures/README.md).

## Migration checklist (10 steps)

1. **Inventory** — List profiles, folders, and tags in the source browser; note plan limits on the MLX target.
2. **Export metadata** — AdsPower CSV, Dolphin API JSON, Incogniton API JSON, or GoLogin REST export (not proprietary local DBs).
3. **Parse** — `antidetect-import parse <export> --format <vendor> -o raw.json`.
4. **Audit gaps** — `antidetect-import report raw.json --show-missing-fields` (table lists missing MLX fields per profile).
5. **Fix timezone / language** — Fill IANA timezone and BCP-47 locale in source tool or post-process `raw.json`.
6. **Verify proxy** — Ensure each profile has `host` + `port`; credentials stay in `raw.json` / `mlx-ready.json` (handle as secrets).
7. **Normalize** — `antidetect-import normalize --input raw.json -o mlx-ready.json --folder-id <uuid>`; review `required_gaps` and `filled_defaults` in output.
8. **Drop or patch incomplete** — Re-run with `--drop-incomplete` or fix gaps before push.
9. **Push profiles** — `antidetect-import mlx-push --input mlx-ready.json` (requires `MLX_TOKEN`; optional `MLX_FOLDER_ID`).
10. **Import cookies & warm up** — Load `_cookies` via Launcher API or `session-bundle-kit`; re-install extensions; warm sessions before production.

Proxy passwords are **redacted in reports and logs**; parsed JSON files written with `-o` retain credentials needed for migration.

## When migration reports show gaps (playbook)

`report --show-missing-fields` is the decision point — do not `mlx-push` blind on hundreds of profiles.

| Gap signal | What it means | Next step |
|------------|---------------|-----------|
| Missing `timezone` / `language` | Export incomplete or vendor default | Fix in source tool or patch `raw.json` |
| Empty proxy host | Profile was local/direct | Assign lane from [proxy-lane-checker](https://pypi.org/project/proxy-lane-checker/) |
| `required_gaps` after normalize | MLX mandatory fields absent | `--drop-incomplete` or fill via [profile-yaml-factory](https://pypi.org/project/profile-yaml-factory/) templates |
| `_cookies` sidecar only | Metadata pushed, sessions not | `session-bundle-kit` or Launcher cookie import |
| High `filled_defaults` count | Vendor export thin | Spot-check 3 profiles in MLX UI before full batch |

**End-to-end migration pipeline:**

```bash
antidetect-import parse export.csv --format adspower -o raw.json
antidetect-import report raw.json --show-missing-fields
proxy-lane check proxies.txt -o lanes.json                    # optional: validate exits
antidetect-import normalize --input raw.json -o mlx.json --folder-id FOLDER
fp-coherence audit mlx.json --strict                          # lint normalized fingerprints
antidetect-import mlx-push --input mlx.json --fail-fast       # pilot 1 profile first
cdp-probe mlx --profile-id NEW_UUID --url https://example.com # post-migration exposure check
```

**Coupon hubs:** [anti-detect.github.io](https://anti-detect.github.io/) · [SaaSVerdict](https://saasverdict.com/) — guides for `SAAS50` / `MIN50`, pricing comparisons, and workflow playbooks.

Migrate only profiles you are **authorized** to move; respect source and target vendor terms.

## Python API

```python
from antidetect_importer import parse_file, normalize_document

doc = parse_file("tests/fixtures/dolphin/backup.json", format="dolphin")
mlx_doc = normalize_document(doc, folder_id="your-folder-uuid")
print(mlx_doc["required_gaps"])
```

## Development

```bash
cd antidetect-importer
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check .
python -m build
```

## Limitations

- **Metadata migration** — Parses export files; does not read proprietary local databases or decrypt vendor vaults.
- **Cookies need follow-up** — `_cookies` sidecars are preserved but not pushed by `mlx-push`; use Launcher API or `session-bundle-kit` (`session-bundle export`).
- **Vendor coverage** — AdsPower, Dolphin, Incogniton, GoLogin only; other tools need custom parsers.
- **MLX API required for push** — `mlx-push` needs `MLX_TOKEN`; parse/normalize/report are offline.

## Production

Parse → `report` → normalize → `mlx-push` covers competitor **metadata** migration into MLX `profile/create`. Cookies and extensions need the follow-up steps in the migration checklist above.

**Partner note (affiliate):** If **Multilogin X** is your migration target (folder pools, Launcher CDP, isolated profiles at scale), eligible new browser purchases may accept code **`SAAS50`** at [multilogin.com](https://multilogin.com?a_aid=saas) — verify current terms before checkout. We only mention MLX when migration workflow fits; parse/normalize work offline without any account. Full disclosure: [docs/AFFILIATE.md](docs/AFFILIATE.md). Deals hubs: [anti-detect.github.io](https://anti-detect.github.io/) · [SaaSVerdict](https://saasverdict.com/). Coupon details only via `antidetect-import --show-deal` (never printed by default).

**FAQ:** [docs/FAQ.md](docs/FAQ.md) — AdsPower to Multilogin, Dolphin Anty, Incogniton, GoLogin migration.





## Related tools (on PyPI)

| Package | CLI | Role |
|---------|-----|------|
| [playwright-cdp-probe](https://pypi.org/project/playwright-cdp-probe/) | `cdp-probe` | CDP / WebDriver exposure score |
| [cookie-jar-bridge](https://pypi.org/project/cookie-jar-bridge/) | `cookie-bridge` | Netscape ↔ Playwright cookies |
| [proxy-lane-checker](https://pypi.org/project/proxy-lane-checker/) | `proxy-lane` | Proxy TCP / HTTP / geo / DNSBL |
| [fingerprint-coherence](https://pypi.org/project/fingerprint-coherence/) | `fp-coherence` | UA / screen / timezone lint |
| [mlx-warmup-kit](https://pypi.org/project/mlx-warmup-kit/) | `mlx-warmup` | Post-migration browser warmup |
| [cloud-phone-kit](https://pypi.org/project/cloud-phone-kit/) | `cloud-phone` | Mobile app profiles (TikTok/IG) |
| [automation-farm-runner](https://pypi.org/project/automation-farm-runner/) | `farm-runner` | Folder cron + mlx-pool |

**Migration pipeline:** `antidetect-import parse` → `mlx-push` → `mlx-warmup plan` → `farm-runner mlx-pool`

## License

MIT

---

**Production antidetect:** [Multilogin X](https://multilogin.com?a_aid=saas) · Code `SAAS50` (-50% browser) · [MIN50](https://multilogin.com?a_aid=saas) (-50% cloud phone)  
More scripts: [@Multilogin_Scripts_Bot](https://t.me/Multilogin_Scripts_Bot) · [anti-detect.github.io](https://anti-detect.github.io/) · [SaaSVerdict](https://saasverdict.com/)
