{"id":21531670,"url":"https://github.com/ading2210/sandstone","last_synced_at":"2025-04-10T00:28:32.606Z","repository":{"id":257826944,"uuid":"828157640","full_name":"ading2210/sandstone","owner":"ading2210","description":"An experimental web proxy utilizing sandboxed iframes and no service worker.","archived":false,"fork":false,"pushed_at":"2024-10-15T07:21:31.000Z","size":485,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-15T07:55:03.953Z","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":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ading2210.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-07-13T09:39:37.000Z","updated_at":"2024-10-15T07:21:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"2de0d51b-6021-417d-89d8-fa2570775c8d","html_url":"https://github.com/ading2210/sandstone","commit_stats":null,"previous_names":["ading2210/sandstone"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ading2210%2Fsandstone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ading2210%2Fsandstone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ading2210%2Fsandstone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ading2210%2Fsandstone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ading2210","download_url":"https://codeload.github.com/ading2210/sandstone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248133601,"owners_count":21053281,"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-11-24T02:15:49.065Z","updated_at":"2025-04-10T00:28:32.586Z","avatar_url":"https://github.com/ading2210.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Sandstone\n\n[\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/a/af/USDA_Mineral_Sandstone_93c3955.jpg?20050520171627\" height=\"128px\"\u003e](https://commons.wikimedia.org/wiki/File:USDA_Mineral_Sandstone_93c3955.jpg)\n\nSandstone is an experimental web proxy utilizing sandboxed iframes and no service worker. \n\nTraditional web proxies like [Ultraviolet](https://github.com/titaniumnetwork-dev/Ultraviolet) require you to visit a domain that is unblocked, leading to a whack-a-mole situation of having these domains be blocked and trying to find new ones. Sandstone on the other hand is able to run from within a local HTML file, so it can avoid being blocked in many situations. Additionally, traditional web proxies do not sandbox the proxied pages, so any site can take control of the proxy as a whole and steal credentials. Sandstone avoids this by putting the proxied pages inside a [sandboxed iframe](https://www.w3schools.com/tags/att_iframe_sandbox.asp), so they absolutely cannot access the parent page.\n\nTry it here: https://sandstone.pages.dev/\n\n## Features\n- Every proxied page runs in a sandboxed iframe\n- Can be used from an HTML file or as a data URL\n- Does not use service workers\n- Uses [libcurl.js](https://www.npmjs.com/package/libcurl.js) and [Wisp](https://github.com/MercuryWorkshop/wisp-protocol) for end-to-end encryption\n\n## Site Support\n- [Discord](https://discord.com/app)\n  - The login page does work, but not the captcha\n  - Note: works in v0.1.1 but not v0.2.0\n- [Amazon](https://www.amazon.com/)\n- [v86](https://copy.sh/v86/)\n- Youtube embeds\n- Some HTML5 games, such as:\n  - [Minecraft Classic](https://classic.minecraft.net/)\n  - [Slither.io](https://slither.io/)\n- Most static sites\n\n## Status\nThis is at a very early stage of development and lacks support for most web APIs. \n\n### Working Features\n- Fetch API\n- Basic javascript\n- Local storage\n- Web workers\n- XMLHttpRequest\n- Media elements such as `\u003cimg\u003e`\n- CSS rewriting\n- Anchor tags \n- HTML redirects\n- HTML forms\n\n### Notable Unimplemented Features\n- Cookies\n- ES6 modules\n- HTTP request caching\n\n## Usage\n### Building\n1. Clone this repository and cd into it.\n2. Run `npm i` to install the dependencies.\n3. Run `npm run build:prod` to bundle the client JS. You may also use `npm run dev`.\n\n### Running the Example Frontend\n1. Cd into the `example` subdirectory\n2. Run `npm i` to install the server dependencies\n3. Run `npm run build:prod` to bundle the frontend JS.\n4. Run `npm run start` which will start the web server\n\n## License\n```\nading2210/sandstone - A web proxy using sandboxed iframes \nCopyright (C) 2025 ading2210\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fading2210%2Fsandstone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fading2210%2Fsandstone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fading2210%2Fsandstone/lists"}