• This repository has been archived on 06/Nov/2021
  • Stars
    star
    260
  • Rank 157,189 (Top 4 %)
  • Language
    Objective-C
  • License
    Other
  • Created almost 10 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

iOS web browser with a focus on security and privacy

Endless

An open-source MobileSafari-like web browser for iOS (wrapping around UIWebView) with a design goal of increased security and privacy.

While this software is open source and you are free to modify it and use it on your own devices, redistribution of this software in binary form, with or without modification, is not permitted. Please see the LICENSE for redistribution terms.

Screenshots

https://i.imgur.com/8FgHAWZ.png https://i.imgur.com/evQ63JX.png

Basic browser functionality implemented:

  • Basics of entering URLs, following redirections, back, forward, cookie storage, HTTP basic authentication

  • Multiple tabs with support for window.open() and <a target="_blank"> automatically opening new tab windows, but blocks calls not made via user interaction events (similar to most desktop browser popup blockers)

  • Bookmark list with management, re-ordering, and editing

  • Custom long-press menu for links to open in a new tab, and to save images to the device; shows image or link alt text (useful for sites like xkcd)

  • Swipe left and right to go back and forward

  • Long-press on back button to show history and quickly go back more than one page

  • Search from URL bar with DDG, Google, or Startpage, including optional auto-complete of search queries

  • Optional dark/night-time interface

  • Full hardware keyboard support for websites that support keyboard shortcuts, as well as global shortcuts for common functions like Command+T for new tab, Command+W to close, Command+L to focus URL field, etc.

Security and privacy-focused features implemented:
  • Per-host/domain security and privacy settings:

    • Disables SSL 2 and SSL 3 by default with a configurable minimum TLS version to require from the host, such as TLS 1.2-only. Also disables weak TLS ciphers.

    • Configurable security policy:

      • Open (default, normal browsing mode)

      • No after-load connections (blocks XMLHTTPRequest/AJAX requests, WebSockets, and <video> and <audio> elements)

      • Strict (blocks all of the above plus embedded fonts and Javascript)

    • Blocks mixed-content requests (http elements on an https page) unless disabled (useful for RSS readers), shows broken padlock

    • Blocks pages loaded from non-local networks (i.e., the internet) from trying to load sub-requests (e.g., images, iframes, ajax) from hosts that are on local IPv4 and IPv6 networks such as routers and other insecure devices

    • Defaults to only accepting cookies and local storage for the duration of the session (until the last tab accessing that data closes) but allows persistent storage from configured hosts

    • Blocks WebRTC by default

  • Auto-destroys non-whitelisted cookies and local storage (even within the same tab) that has not been accessed by any other tab within a configurable amount of time (defaults to 30 minutes) to improve privacy while browsing within a long-running tab

  • Cookie and localStorage database listing and deletion per-host

  • Integrated full HTTPS Everywhere ruleset to do on-the-fly URL rewriting to force requests over SSL where supported, including setting the secure bit on received cookies and auto-detection of redirection loops

  • HTTP Strict Transport Security (RFC6797) implementation (in addition to WebKit's mystery built-in one) with Chromium's large preload list

  • Integrated URL blocker with a small included ruleset of behavior-tracking advertising, analytics, and social networking widgets (this list is intended for enhancing privacy and not to be an AdBlock-style comprehensive ad-blocking list)

  • Shows locked padlock for fully SSL-encrypted URLs, and a green padlock for sites with EV SSL certs

  • Integrated SSL certificate viewer by tapping on padlock icon, highlighting weak SSL certificate signature algorithms and showing per-connection negotiated TLS/SSL protocol version and cipher information

  • Optional sending of Do-Not-Track header on all requests

  • Disables 3rd party keyboards by default with option to enable

  • Integrated password manager button to autofill website logins, passwords, credit card numbers, etc.; requires the 1Password or Bitwarden iOS app to be installed (and is not enabled if not installed)

Infrequently Asked Questions

  1. Why does this software still use UIWebView instead of the newer WKWebView?

WKWebView was introduced in iOS 8 to replace UIWebView and it brought about a bunch of new features that are useful when creating a web browser (Firefox and Chrome for iOS both use WKWebView) such as page loading progress callbacks and a newer, faster Javascript engine. Unfortunately Apple removed the ability to use a custom NSURLProtocol class, which can intercept each request and response between the browser engine and the web server.

This is a critical component to Endless and is how it does things like change TLS ciphers, block tracking scripts, and do restrictive CSP header manipulation.

More Repositories

1

xbanish

Hide the mouse cursor when typing and show it again when the mouse moves
C
499
star
2

sdorfehs

A tiling window manager
C
238
star
3

payphone

notes and code for my payphone project
Perl
238
star
4

no_color

Website data for no-color.org
HTML
230
star
5

progman

progman.exe^H^H^H^H
C
184
star
6

dotfiles

ftp -o - https://jcs.org/move_in | sh -
Vim Script
133
star
7

login_duress

A BSD authentication module for duress passwords
C
102
star
8

ansiterm

dos 437 fonts and configs for viewing ANSI art in xterm
Shell
60
star
9

ssh-agent-card-prompt

A prompt for ssh-agent(1) when your Yubikey needs poking
C
43
star
10

spoonfish

Lua
33
star
11

msTERM

Terminal program for MailStation devices
Assembly
32
star
12

xdimmer

lightweight X11 utility to dim the screen and/or keyboard backlight when idle
C
30
star
13

ratpoison

jcs ratpoison hax
C
30
star
14

blueping

C
18
star
15

adium-pipeevent

Adium plugin to pipe events/messages to an external program
Objective-C
18
star
16

WiFiStation

Bringing WiFi to the Cidco Mailstation
C++
17
star
17

vmwh

vmware userland helper
C
15
star
18

sockhole

Ruby
14
star
19

halfmoon

a tiny mvc framework for php using php-activerecord
PHP
14
star
20

mailstation-tools

Tools for working with Cidco Mailstations
Assembly
14
star
21

classic-mac-fonts

Classic Mac OS Fonts in BDF and TTF format
14
star
22

twitframe

Website data for twitframe.com
HTML
13
star
23

mp3chap

command line tool for adding ID3 chapters to an MP3 file
Go
13
star
24

notes

Ruby
13
star
25

sdorfehs-bar

A bar script for sdorfehs
Ruby
12
star
26

xweathericon

C
11
star
27

xbatticon

Battery/charge status for progman
C
10
star
28

tpadnav

C
9
star
29

pullup-counter

A program to read a Phidget IR sensor and log pull-ups with Fitbit's API
Ruby
9
star
30

pce

fork of PCE focusing on macplus, supporting DaynaPort SCSI network emulation
C
8
star
31

openbsd-ports

/usr/ports/mystuff
Makefile
8
star
32

sinatree

A skeleton web application configured to use Sinatra and ActiveRecord
Ruby
8
star
33

itunes-rsync

utility to sync an itunes playlist to a directory (like a mounted sd card/phone)
Ruby
7
star
34

qconsole

quake-style console with xterm
C
7
star
35

siriproxy-ecobee

SiriProxy plugin for controlling an Ecobee thermostat
Ruby
6
star
36

shadowebkit

an experiment in making a cocoa webkit browser manageable under X11
Objective-C
6
star
37

xcalicon

Calendar/time for progman
C
6
star
38

MailStation-Example

Example program for the Cidco MailStation Z80 computer
Assembly
6
star
39

WiFiPPP

ESP8266-based WiFi serial modem emulator ROM
C++
5
star
40

arduboy-1010

1010 for Arduboy
C++
5
star
41

pixelclock

a small clock for X11 that displays time as pixels
C
5
star
42

mutt

mutt stable branch with some hacks
C
4
star
43

garbagefm

CMS for the late garbage.fm
PHP
4
star
44

eyetunes

a tiny webserver used to display the current itunes song
Ruby
4
star
45

logicmail

git clone of logicmail with some fixes/features added
Java
3
star
46

openbsd-commitid

script to retroactively add commitids to past openbsd commits
Shell
3
star
47

itrc

fork of iTunes Remote Control with bugfixes and enhancements
C
3
star
48

swoopowned

swoopo.com bid watcher and automated bidder
JavaScript
3
star
49

slock

slock with dpms and other tweaks
C
2
star
50

chibug.org

Website content for chibug.org
CSS
2
star
51

pflightbar

Flash the Chrome EC lightbar when pf blocks a packet
C
2
star
52

adafruit_fourscreen

Utilities for drawing on 4 Adafruit 8x8 LED Backpack displays as one
Ruby
1
star
53

mastofollow

Ruby
1
star
54

minivmac

C
1
star
55

chronosync

Utility to set the time on a Hayes Stack Chronograph
C
1
star
56

qemu

C
1
star