Impervious is a privacy and security-focused browser with native DANE support and a decentralized p2p light client.

Overview

Impervious iOS

The first browser with support for native DNS-Based Authentication of Named Entities (DANE) with true downgrade protection, and the first browser to embed an SPV node to trustlessly verify DNSSEC over the Handshake network. Impervious iOS is a fork of Firefox.

This branch works with Xcode 13.0, Swift 5.5 and supports iOS 13 and above.

Please note: due to dependency issues, development of Impervious-iOS is currently only supported on Intel based Macs, and not Apple Silicon based Macs.

The current build bundles MobileHNS to build on a simulator you need to build it from source and bundle it for iossimulator.

Please make sure you aim your pull requests in the right direction.

For bug fixes and features for a specific release, use the version branch.

Getting involved

Building the code

  1. Install the latest Xcode developer tools from Apple.
  2. Install Carthage, Node, and a Python 3 virtualenv for localization scripts:
    brew update
    brew install carthage
    brew install node
    pip3 install virtualenv
  3. Clone the repository:
    git clone https://github.com/imperviousinc/impervious-ios
  4. Pull in the project dependencies:
    cd impervious-ios
    sh ./bootstrap.sh
  5. Open Client.xcodeproj in Xcode.
  6. Build the Trill scheme in Xcode.

Building User Scripts

User Scripts (JavaScript injected into the WKWebView) are compiled, concatenated, and minified using webpack. User Scripts to be aggregated are placed in the following directories:

/Client
|-- /Frontend
    |-- /UserContent
        |-- /UserScripts
            |-- /AllFrames
            |   |-- /AtDocumentEnd
            |   |-- /AtDocumentStart
            |-- /MainFrame
                |-- /AtDocumentEnd
                |-- /AtDocumentStart

This reduces the total possible number of User Scripts down to four. The compiled output from concatenating and minifying the User Scripts placed in these folders resides in /Client/Assets and are named accordingly:

  • AllFramesAtDocumentEnd.js
  • AllFramesAtDocumentStart.js
  • MainFrameAtDocumentEnd.js
  • MainFrameAtDocumentStart.js

To simplify the build process, these compiled files are checked-in to this repository. When adding or editing User Scripts, these files can be re-compiled with webpack manually. This requires Node.js to be installed, and all required npm packages can be installed by running npm install in the project's root directory. User Scripts can be compiled by running the following npm command in the root directory of the project:

npm run build

Contributing

Contributions welcome!

License

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/
You might also like...
Access the native iOS / macOS reminders (get, update, delete) in TiDev / Titanium.

Titanium iOS Reminders API Access the native iOS reminders (get, update, delete) in TiDev / Titanium. Requirements The NSRemindersUsageDescription pri

Native ios app to download tiktoks localy made in swift with SwiftUI
Native ios app to download tiktoks localy made in swift with SwiftUI

sequoia Native ios app to download tiktoks localy made in swift with SwiftUI without external dependencies. features save video localy view saved vide

Swift implementation of WalletConnect v.2 protocol for native iOS applications

Wallet Connect v.2 - Swift Swift implementation of WalletConnect v.2 protocol for native iOS applications. Requirements iOS 13 XCode 13 Swift 5 Usage

Demo project to try WebRTC native bindings in .net MAUI

MAUI.WebRTC.Demo Demo project to try WebRTC native bindings in .net MAUI. There are two projects with Xamarin bindings https://github.com/melihercan/W

Socket.io iOS and OSX Client compatible with v1.0 and later
Socket.io iOS and OSX Client compatible with v1.0 and later

SocketIO-Kit ⚠️ This project is no longer maintained. Please use the official framework Socket.IO-Client-Swift. SocketIO-Kit is a Socket.io iOS client

🔌  Non-blocking TCP socket layer, with event-driven server and client.
🔌 Non-blocking TCP socket layer, with event-driven server and client.

Original authors Honza Dvorsky - http://honzadvorsky.com, @czechboy0 Matthias Kreileder - @matthiaskr1 At the request of the original authors, we ask

A simple GCD based HTTP client and server, written in 'pure' Swift
A simple GCD based HTTP client and server, written in 'pure' Swift

SwiftyHTTP Note: I'm probably not going to update this any further - If you need a Swift networking toolset for the server side, consider: Macro.swift

WebSocket implementation for use by Client and Server

WebSocket ⚠️ This module contains no networking. To create a WebSocket Server, see WebSocketServer. To create a WebSocket Client, see WebSocketClient.

SSH and SFTP client for iOS
SSH and SFTP client for iOS

Parrot.Flo SSH and SFTP client for iOS https://parrot-flo.site BUG ? Please Submit new issue Contact me Hey ? do you want ask about all my tools ? you

Comments
  • Beacon doesn't work on cellular

    Beacon doesn't work on cellular

    Currently, Beacon only resolves over wifi. With the VPN active, it also blocks Internet access in Safari.

    I'm running this on an iPhone 13 Pro Max on iOS 15.1.1.

    opened by NetOpWibby 7
  • Domain name optionally as unicode after resolving

    Domain name optionally as unicode after resolving

    There's this lovely page https://🤝.🕰 - the first secure punycode domain site (by @pinheadmz) I know of. After resolving the name it only shows the URL as punycode. It would be cool to have the option to flip this back to unicode or at least to see unicode version somewhere. 9128D567-E4EB-427C-AE0A-BE191CA53D0D_1_201_a

    opened by befranz 3
  • v.0.0.1 (5) Not able to set it as default browser

    v.0.0.1 (5) Not able to set it as default browser

    On iOS 15.1. (iphone) I'm not able to set it as default browser. Compared to the page I get when I do the same on Firefox, this is very reduced.

    I also changed system language from German to English with no different effect.

    Settings Impervious Beta

    opened by befranz 1
Owner
Impervious Inc
Cypherpunk development for Bitcoin and Handshake
Impervious Inc
Cross-platform JsonRPC client implementation with HTTP and WebSocket support

JsonRPC.swift Cross-platform JsonRPC client implementation with HTTP and WebSocket support Getting started Installation Package Manager Add the follow

Tesseract 5 Oct 19, 2022
A native, lightweight and secure time-based (TOTP) & counter-based (HOTP) password client built for iOS

A native, lightweight and secure time-based (TOTP) & counter-based (HOTP) password client built for iOS Built by Tijme Gommers – Buy me a coffee via P

Raivo OTP 770 Jan 8, 2023
Twitter-Client - A twitter client that allow users to view tweets on their iphone

Project 3 - Twitter Client Name of your app is a basic twitter app to read your

null 0 Feb 7, 2022
WKZombie is an iOS/OSX web-browser without a graphical user interface.

WKZombie is a Swift framework for iOS/OSX to navigate within websites and collect data without the need of User Interface or API, also known as Headless browser. It can be used to run automated tests / snapshots and manipulate websites using Javascript.

Mathias Köhnke 1.1k Dec 16, 2022
A light weight network library with automated model parser for rapid development

Gem A light weight network library with automated model parser for rapid development. Managing all http request with automated model parser calls in a

Albin CR 10 Nov 19, 2022
A place to share code and server configurations in support of the networkQuality tool

Network Quality Server Welcome! The Network Quality Server project was created as a place to share example servers that can used by the networkQuality

null 99 Jan 3, 2023
Easy HTTP Networking in Swift a NSURLSession wrapper with image caching support

Networking was born out of the necessity of having a simple networking library that doesn't have crazy programming abstractions or uses the latest rea

Nes 1.3k Dec 17, 2022
Modern networking support to monitor network connectivity

ConnectivityKit Adapting to changes in network connectivity can allow for suspending or resuming network activity. When entering an elevator or going

Brennan Stehling 1 Nov 7, 2022
GeminiProtocol - URLSession support for the Gemini Protocol

GeminiProtocol Network.Framework and URLSession support for the Gemini Protocol

Izzy 3 Feb 16, 2022
Access Xcode Server API with native Swift objects.

Xcode Server SDK Use Xcode Server's API with native Swift objects. First brought to you in Buildasaur, now in an independent project. This is an unoff

Buildasaurs 401 Dec 29, 2022