{"id":23264139,"url":"https://github.com/jdgregson/remote-browser","last_synced_at":"2025-04-06T06:40:59.569Z","repository":{"id":67868997,"uuid":"368440321","full_name":"jdgregson/remote-browser","owner":"jdgregson","description":"Remote Browser screenshots websites in a remote VM and sends you the screenshot so you don't have to render untrusted content on your device.","archived":false,"fork":false,"pushed_at":"2021-05-18T08:04:25.000Z","size":7787,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-12T12:18:58.825Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdgregson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-05-18T07:31:58.000Z","updated_at":"2021-05-18T08:04:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"f82412cd-1117-43de-bd96-60e71d2f7b40","html_url":"https://github.com/jdgregson/remote-browser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdgregson%2Fremote-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdgregson%2Fremote-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdgregson%2Fremote-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdgregson%2Fremote-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdgregson","download_url":"https://codeload.github.com/jdgregson/remote-browser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247445648,"owners_count":20939953,"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-12-19T14:30:21.303Z","updated_at":"2025-04-06T06:40:59.530Z","avatar_url":"https://github.com/jdgregson.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Remote Browser\n\nRemote Browser is a self-hosted web interface intended to provide a tolerable\nweb browsing experience without rendering untrusted web content on your device.\nIt does this by capturing a screenshot of a specified page, or capturing only\nthe text using the Lynx browser.\n\nRemote Browser is designed to work without JavaScript or cookies, and is aimed\nat iPhone users who have achieved a truly unrealistic level of digital paranoia\n(so just me, basically). However, it should work no matter what device you use.\n\nThe idea is that users spin up a virtual server which runs Remote Browser, and\nthen pin the PWA to their home screen. There is no authentication currently as\nit is assumed that each Remote Browser instance will be firewalled off and only\naccessible to the intended user via a VPN or SSH tunnel.\n\n![alt text](https://github.com/jdgregson/remote-browser/blob/c9b5308880264fdfbb1208457ed3015a1989b314/docs/demo.gif \"Remote Browser Demo\")\n\n\n## Features\n\n### Screenshots\nRemote Browser primarily captures screenshots of websites for you to read.\n\n### Lynx and Linked Lynx\nRemote Browser provides the text of a website as captured by the Lynx browser.\nIt also provides a Reading view where the references are linked to the original\nURL.\n\n### No JavaScript\nRemote Browser does not use JavaScript so you are able to disable it entirely on\nyour device's browser. Remote Browser uses a Content Security Policy which\nexplicitly disables JavaScript from all sources, and adds Canaries in places\nwhich will show an alert if JavaScript has somehow been re-enabled.\n\n### No Cookies\nRemote Browser does not use cookies so you are able to disable them entirely on\nyour device's browser. Additionally, each screenshot is captured in a new\nFirefox profile in a Private Window, so no cookies are used on the remote side\neither.\n\n### Tabs\nRemote Browser has tabs.\n\n### User Agent Switching\nYou can change user agents if the website doesn't look right in the screenshot.\n\n### Width Adjustment\nYou can change the screenshot width if the web site isn't responsive enough.\n\n## Setup\n\nTo install and configure Remote Browser, do the following (untested, may be\nmissing some steps):\n\n 1. Install dependencies: `apt-get install lighttpd lynx firefox`\n 2. Create a new user for the backend: `adduser browser`\n 3. Copy the contents of `browser` to `/var/www/html/browser`\n 4. Copy the contents of `browser-backend` to `/opt/browser`\n 5. Change the owner of `/opt/browser` to `browser:www-data` and permissions to `664`\n 6. Change the owner of `/opt/browser/content` to `browser:www-data` and permissions to `664`\n 7. Change the owner of `/opt/browser/sessions` to `browser:www-data` and permissions to `664`\n 8. Change the owner of `/opt/browser/useragent` to `browser:www-data` and permissions to `664`\n 9. Make sure `abort`, `lynx`, `lynx-links`, `reset`, and `screenshot` in `/opt/browser` are executable\n 10. Add the following to `/etc/sudoers` using `visudo`:\n\n    www-data        ALL = (browser) NOPASSWD: /opt/browser/screenshot\n    www-data        ALL = (browser) NOPASSWD: /opt/browser/abort\n    www-data        ALL = (browser) NOPASSWD: /opt/browser/lynx\n    www-data        ALL = (browser) NOPASSWD: /opt/browser/pandoc\n    www-data        ALL = (browser) NOPASSWD: /opt/browser/reset\n    www-data        ALL = (browser) NOPASSWD: /opt/browser/lynx-links\n\n## Todo\n\n - Re-write Remote Browser in Python\n - Distribute Remote Browser via Docker (if that's still cool)\n - Think of a cool project name\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdgregson%2Fremote-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdgregson%2Fremote-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdgregson%2Fremote-browser/lists"}