{"id":17966321,"url":"https://github.com/rushiimachine/ktor-impersonate","last_synced_at":"2026-02-05T20:11:26.181Z","repository":{"id":258119069,"uuid":"869192825","full_name":"rushiiMachine/ktor-impersonate","owner":"rushiiMachine","description":"KMP Ktor engine bindings to reqwest-impersonate for spoofing JA3/JA4/H2 fingerprints.","archived":false,"fork":false,"pushed_at":"2024-10-20T00:13:32.000Z","size":166,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-16T02:41:38.521Z","etag":null,"topics":["android","ja3","ja4","kmp","kotlin","ktor"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rushiiMachine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-07T21:52:46.000Z","updated_at":"2025-03-13T11:24:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"c6cf1fd6-e0ab-4f3e-b669-e4cfee7b7702","html_url":"https://github.com/rushiiMachine/ktor-impersonate","commit_stats":null,"previous_names":["rushiimachine/ktor-impersonate"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rushiiMachine/ktor-impersonate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushiiMachine%2Fktor-impersonate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushiiMachine%2Fktor-impersonate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushiiMachine%2Fktor-impersonate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushiiMachine%2Fktor-impersonate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rushiiMachine","download_url":"https://codeload.github.com/rushiiMachine/ktor-impersonate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushiiMachine%2Fktor-impersonate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29132944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T19:36:52.185Z","status":"ssl_error","status_checked_at":"2026-02-05T19:35:40.941Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","ja3","ja4","kmp","kotlin","ktor"],"created_at":"2024-10-29T13:09:36.595Z","updated_at":"2026-02-05T20:11:26.155Z","avatar_url":"https://github.com/rushiiMachine.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ktor-impersonate (WIP)\n\n### This project is currently under development and is not ready for usage!\n\nA Kotlin-Multiplatform (KMP)\u003csup\u003e1\u003c/sup\u003e Ktor client engine that binds to the [rquest]\n(aka. reqwest-impersonate) Rust crate, allowing configuring the TLS `ClientHello` and HTTP/2 options\nat a low level.\n\nThis allows impersonating browsers and other HTTP clients with ease, and spoofing\nJA3/JA4/Akamai HTTP/2 fingerprints. Presets are provided for convenience of Chrome, Safari, Edge,\nand OkHTTP.\n\n\u003csup\u003e1:\nCurrently only Android (x86, x86_64, armeabi-v7a, arm64-v8a) is supported.\nMore platforms, including JVM, Desktop native, and iOS, will be supported at a later date.\n\u003c/sup\u003e\n\u003cbr/\u003e\n\n# Usage\n\n`build.gradle.kts`:\n\n```kts\nval version = \"1.0.0\"\n\n// Without KMP\ndependencies {\n  implementation(\"dev.rushii.ktor-impersonate:ktor-impersonate:$version\")\n}\n\n// KMP\nkotlin {\n  sourceSets {\n    commonMain.dependencies {\n      implementation(\"dev.rushii.ktor-impersonate:ktor-impersonate:$version\")\n    }\n  }\n}\n```\n\nQuick start:\n\n```kotlin\nimport dev.rushii.ktor_impersonate.*\nimport io.ktor.client.*\nimport io.ktor.client.request.*\n\nval client = HttpClient(Impersonate) {\n  engine {\n    preset = ImpersonatePreset.Chrome129\n  }\n}\n\nclient.get(\"https://google.com\")\n```\n\n[rquest]: https://github.com/penumbra-x/rquest\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frushiimachine%2Fktor-impersonate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frushiimachine%2Fktor-impersonate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frushiimachine%2Fktor-impersonate/lists"}