{"id":29550116,"url":"https://github.com/robalb/ebpf-web-fingerprint","last_synced_at":"2025-07-26T08:02:26.658Z","repository":{"id":301430671,"uuid":"1009236660","full_name":"robalb/ebpf-web-fingerprint","owner":"robalb","description":"a golang library and webserver for fast TCP \u0026 TLS fingerprinting, powered by eBPF","archived":false,"fork":false,"pushed_at":"2025-07-23T19:49:18.000Z","size":6249,"stargazers_count":49,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-23T22:02:50.325Z","etag":null,"topics":["anti-scraping","cilium-ebpf","ebpf","fingerprinting","scraping"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robalb.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":"roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-26T19:54:25.000Z","updated_at":"2025-07-23T20:27:56.000Z","dependencies_parsed_at":"2025-06-26T21:38:35.922Z","dependency_job_id":"9e17f2a5-ef8a-4997-8525-cc89217c10e3","html_url":"https://github.com/robalb/ebpf-web-fingerprint","commit_stats":null,"previous_names":["robalb/ebpf-web-fingerprint"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/robalb/ebpf-web-fingerprint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robalb%2Febpf-web-fingerprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robalb%2Febpf-web-fingerprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robalb%2Febpf-web-fingerprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robalb%2Febpf-web-fingerprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robalb","download_url":"https://codeload.github.com/robalb/ebpf-web-fingerprint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robalb%2Febpf-web-fingerprint/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267138351,"owners_count":24041589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["anti-scraping","cilium-ebpf","ebpf","fingerprinting","scraping"],"created_at":"2025-07-18T01:02:24.925Z","updated_at":"2025-07-26T08:02:26.610Z","avatar_url":"https://github.com/robalb.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# eBPF web fingerprint\n\na golang webserver and library for fast TCP \u0026 TLS fingerprinting, powered by eBPF.\nSee [this article](https://halb.it/posts/ebpf-fingerprinting-1/)\nfor a high-level introduction on the topic.\n\nThis project is available in two modes:\n\n1. ### Standalone Test Webserver\nA simple webserver that echoes back detailed information about a\nvisitor's TCP and TLS handshakes.\nIt can be used to experiment with fingerprintig detection and evasion techniques,\nor as a reference implementation of the fingerprint library.\n\n2. ### Golang fingerprint library\nA reusable library that can be embedded into existing Golang webservers or\nreverse proxies.\nIt exposes low-level metadata about incoming client connections, enabling advanced fingerprinting and bot detection strategies.\n\n\n## Run the Test Webserver\n\nTo build and run the Webserver in a dedicated network namespace:\n```\nmake testns_run\n```\n\nthe server will be accessible at \n`http://10.200.1.2:8080/test/id`\n\nNote that the build process currently requires the Linux UAPI headers to be \ninstalled on your system.\n\n### Run the demo server, with TLS\n\nfirst, you must generate a valid self-signed certificate for the ip `10.200.1.2`:\n\n```\nopenssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf\n```\n\nthe server will be accessible at \n```\ncurl https://10.200.1.2:8080/test/id --unsecure\n```\n\nto use a specific TLS version:\n\n```\ncurl https://10.200.1.2:8080/test/id --unsecure --tlsv1.1 --tls-max 1.1\n```\n\nThis project includes some test proxies as submodules in the `test/` folder.\nThey are useful to test the behaviour of the system under TLS and TCP fragmentation.\n\nto use a specific TLS version and a test proxy, first launch the proxy. then\nrun:\n```\ncurl https://10.200.1.2:8080/test/id --unsecure --tlsv1.1 --tls-max 1.1 --proxy localhost:4433\n```\n\n\n## Goals\n\nNote that the main goal of this project is to make \nraw handshake data easily accessible from a regular golang webserver,\nwith as little overhead as possible.\n\nThe implementation of specific fingerprint standards or techniques is out of \nscope. The end user should be left with the freedom to implement the system\nthey want, based on their project requirements.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobalb%2Febpf-web-fingerprint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobalb%2Febpf-web-fingerprint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobalb%2Febpf-web-fingerprint/lists"}