{"id":15456565,"url":"https://github.com/tabcat/limo-hijacker","last_synced_at":"2025-04-01T11:34:43.146Z","repository":{"id":241983715,"uuid":"807616376","full_name":"tabcat/limo-hijacker","owner":"tabcat","description":"client-side verifying ENS+IPFS resolver firefox extension","archived":false,"fork":false,"pushed_at":"2024-06-04T18:00:21.000Z","size":254,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-12T12:21:28.419Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tabcat.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-05-29T12:51:02.000Z","updated_at":"2024-06-04T18:00:24.000Z","dependencies_parsed_at":"2024-06-04T16:58:14.832Z","dependency_job_id":"03fb06e6-1436-41e1-84ad-d6b2ebb6cbb8","html_url":"https://github.com/tabcat/limo-hijacker","commit_stats":{"total_commits":49,"total_committers":1,"mean_commits":49.0,"dds":0.0,"last_synced_commit":"a5ebbc14054e5d71100863dcb266f842bc6166d6"},"previous_names":["tabcat/placeholder","tabcat/limo-hijacker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tabcat%2Flimo-hijacker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tabcat%2Flimo-hijacker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tabcat%2Flimo-hijacker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tabcat%2Flimo-hijacker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tabcat","download_url":"https://codeload.github.com/tabcat/limo-hijacker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246634403,"owners_count":20809235,"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","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":[],"created_at":"2024-10-01T22:33:32.369Z","updated_at":"2025-04-01T11:34:43.125Z","avatar_url":"https://github.com/tabcat.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# limo hijacker 🕴️\n\nclient-side verifying ENS/IPFS resolver firefox extension\n\n## Disclaimer\n\nThis project is more of an **art project** and **learning process** for myself. I recommend using eth.limo without this extension normally.\n\n⚠️ **Only working in Firefox as it relies on [webRequest.filterResponseData](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData).** ⚠️\n\n## How does it work?\n\nThe extension:\n1. Intercepts requests to eth.limo\n2. Resolves the contenthash field of the .eth domain being visited via [@ensdomains/ensjs](https://github.com/ensdomains/ensjs-v3).\n3. Replaces data of responses from eth.limo with response data from a trustless ipfs gateway using [@helia/verified-fetch](https://github.com/ipfs/helia-verified-fetch/tree/main).\n\n## The problem\n\nThere are a few different ways to view IPFS sites resolved through ENS:\n\n|    | client verified | unique origin (per domain) | low friction | aesthetic address |\n|----|----------|----------|---|---|\n| IPFS Gateway (e.g. dweb.link) |❌|❌|✅|❌|\n| ENS Gateway (e.g. eth.limo) |❌|✅|✅|✅|\n| eth.local (local DNS/ENS resolver) |✅|✅|❌|✅|\n| limo-hijacker |☑️|✅|✅|✅| \n| ens+ipfs:// protocol handler (hypothetical) |⭐|⭐|⭐|⭐| \n\n☑️: IPNS/IPFS resolutions are verified locally on the client, however the ENS resolutions are not.\n\nNone existing are perfect.\n\nThe endgame is either extensions being able to handle ens+ipfs:// links or built in browser support.\nThis will allow resolving web content without needing to interact with any trusted third-parties or systems that use them.\n\n## Prerequisits\n\n[`pnpm`](https://pnpm.io/)\n\n[`web-ext`](https://www.npmjs.com/package/web-ext) (installed globally)\n\n## Build\n\n```bash\npnpm install\npnpm build\n```\n\n## Dev server\n\n```bash\nweb-ext run --source-dir . --devtools\n```\n\nSometimes when visiting a site the extension is able to load the content from ipfs but the site is unable to load the content from the extension (from the filtered http response).\nHaven't investigated this bug much and it could interfere with trying to visit .eth.limo sites.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftabcat%2Flimo-hijacker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftabcat%2Flimo-hijacker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftabcat%2Flimo-hijacker/lists"}