Coder Social home page Coder Social logo

censortracker / censortracker Goto Github PK

View Code? Open in Web Editor NEW
456.0 13.0 39.0 38.94 MB

Censor Tracker is a censorship circumvention extension for Google Chrome and Mozilla Firefox.

Home Page: https://censortracker.org/

License: MIT License

JavaScript 30.22% CSS 13.65% HTML 56.00% Makefile 0.13%
censorship chrome extension proxy bypass bypass-censorship firefox addon chromium mozilla

censortracker's Introduction

Build Netlify CodeFactor Chrome Web Store Mozilla Add-on

Censor Tracker is a censorship circumvention extension for Google Chrome and Mozilla Firefox.

English | Russian

Features

Censor Tracker provides a lot of useful features, here are the most important:

  • Configurable proxy
  • Country-specific proxying
  • Custom proxying list
  • Censorship-resistant itself
  • Warns about websites that transfer data to third parties

Permissions

Censor Tracker requires the following permissions:

  • alarms to support periodic tasks
  • activeTab to detect IDO websites
  • management to be able to detect permission conflicts
  • notifications to show notifications
  • proxy to configure and use Censor Tracker proxy servers
  • scripting to inject content scripts into websites
  • storage to save preferences
  • unlimitedStorage to save the database of blocked websites
  • webNavigation for handling requests
  • http://*/* and https://*/* to proxy any website, retrieve the list of proxy servers, and detect the user's country

Requirements

Censor Tracker works with following versions of browsers:

  • Mozilla Firefox 98 or higher
  • Chromium (Google Chrome, Brave, Edge, Opera etc.) 94 or higher

Development

Prerequisites

Make sure you have required versions of node and npm, which are:

  • node v17.4.0 or higher
  • npm 8.3.1 or higher

Optionally, you may like:

The build was tested only on the following operating systems:

  • Ubuntu 19.10
  • macOS Catalina v10.15.7

We don't guarantee that Censor Tracker will work on outdated versions of browsers, so make sure you're using the latest ones.

We've tested Censor Tracker on the following versions:

  • Mozilla Firefox 98 or higher
  • Google Chrome 94 or higher

Installation

Firstly, you will need to install dependencies:

~ npm install

Now you can build an extension for Chrome like this:

~ npm run build:chrome
~ cd dist/chrome

and for Firefox, like this:

~ npm run build:firefox
~ cd dist/firefox

Troubleshooting: If you're getting error on building an extension using npm, please make sure that your shell supports per-command environment variables (i.e something like this NODE_ENV=production npm run build:firefox:prod)

Going to production

You can build a production version of the extension for Chrome like this:

~ npm run build:chrome:prod
~ npm run release:chrome
~ cd release/chrome

and for Firefox like this:

~ npm run build:firefox:prod
~ npm run release:firefox
~ cd release/firefox

License

Censor Tracker is licensed under the MIT License. See LICENSE for more information.

censortracker's People

Contributors

0xb1b1 avatar adam-kad avatar dependabot[bot] avatar erghel avatar grbovic avatar hellsyeah avatar lk-geimfari avatar networkworm123 avatar piterden avatar rakleed avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

censortracker's Issues

Add pre-commit hooks for code style

I think that it's a good idea to have pre-commit hooks which will check code style.

Of course, we must add information about it to README.

Change icon for the extension

We need icons that more accurately convey the essence of what is happening in the browser.

We have already ordered new icons, so we just need to wait.

Add tests (unit, Selenium)

We need to cover our code with tests because tests are extremely important especially for open source projects.

PAC file extending performance on detecting DPI

It takes at least 2-3 seconds to extend the PAC file when extension detects DPI lock.

This is not acceptable. PAC must be extended immediately.

The last two messages are ones where logic takes 2-3 seconds:

Screenshot 2020-06-22 at 12 31 26

Wrap Chrome API to make it support async/await syntax.

The idea is pretty simple. We need to wrap Chrome API to make it support async/await syntax.

This is how it works right now (callbacks):

chrome.tabs.query({ active: true, lastFocusedWindow: true }, ([tab]) => {
  console.log(tab.id)
})

This is how it will work with promise-based API:

const { id } = await chrome.tabs
  .query({ active: true, lastFocusedWindow: true })
  .catch(console.error)

See src/chrome/promises/index.js

https everywhere

Насколько я понимаю, расширение на данный момент форсирует использование https. Возможно ли добавить исключения для некоторых адресов?

Keep the same extension ID during development.

Extension id must be the same during development to make testing easier.

What should be done:

# Create private key called key.pem
openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out key.pem

# Generate string to be used as "key" in manifest.json (outputs to stdout)
openssl rsa -in key.pem -pubout -outform DER | openssl base64 -A

# Calculate extension ID (outputs to stdout)
openssl rsa -in key.pem -pubout -outform DER | sha256sum | head -c32 | tr 0-9a-f a-p

On creating release key must be removed from manifest.json since Chrome Web Store rejects such packages.

PAC script do not generated on install

CensorTracker does not generate PAC data on install and this causes that bug which shows proxying page for every resource even if it in the registry.

Make CI support Selenium

We need to make our CI support selenium tests.

It Github Actions cannot work with Selenium then we must migrate to Travis CI.

Opt-out of jQuery

I think we should not use jQuery for DOM manipulation. It's better to use Vanilla JS for it.

There are only a few places where we use jQuery in our code so it's totally overhead.

Add Google Analytics

We need to be aware of the number of users, so it's a good idea to use Google Analytics in CWS.

Do not enforce redirect to HTTPS for special-purpose IP addresses.

The handler of requests should ignore special-purpose IP addresses (see RFC6890 for more details).

The ignore list:

0.0.0.0/8 # (0.0.0.0-0.255.255.255)
10.0.0.0/8 # (10.0.0.0-10.255.255.255)
100.64.0.0/10 # 100.64.0.0-100.127.255.255
127.0.0.0/8 # (127.0.0.0-127.255.255.255)
169.254.0.0/16 # (169.254.0.0-169.254.255.255)
192.168.0.0/16
198.51.100.0/24
203.0.113.0/24
224.0.0.0/4
240.0.0.0/4

#IPv6
::/128
::1/128
::/96
::ffff:/96
64::ff9b::/96
2001:db8::/32
fe80::/10
fec0::/10
fc00::/7
ff00::/8

Related: #61

Redesign

  • Redesign unavailable.html and proxy_unavailable.html pages
  • Redesign popup
  • Redesign icons

Opt-out Material Design Bootstrap.

We use about 0.1% of all the features which provide MDB. It's better to write styles manually and opt-out of unnecessary dependencies.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.