Compare commits

..

1 Commits

Author SHA1 Message Date
tycrek ef22baf33c TEST COMMIT 2020-09-29 10:30:59 -06:00
29 changed files with 1072 additions and 2318 deletions

1
.gitattributes vendored
View File

@ -1 +0,0 @@
*.js -linguist-detectable

View File

@ -1,115 +0,0 @@
---
name: New alternative
description: Add a new alternative for a Google service
title: "[NEW] Alternative name here"
labels:
- new
body:
- type: markdown
attributes:
value: |
## Adding a new alternative to the list
Fill out to the best of your ability.
If an optional item is not applicable, feel free to ignore it.
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: "**I have read the guidelines in [CONTRIBUTING.md](../blob/master/CONTRIBUTING.md)**"
required: true
- label: Include my name in [CONTRIBUTORS.md](../blob/master/CONTRIBUTORS.md)
- label: I am affiliated with this alternative
- type: input
id: name
attributes:
label: Alternative name
description: Name of the alternative you wish to add
validations:
required: true
- type: dropdown
id: section
attributes:
label: Section
description: Please also include the section you feel it belongs best in
multiple: true
options:
- Browser extensions
- Web-based products
- Operating systems
- Desktop applications
- Mobile applications
- Hardware
- type: textarea
id: description
attributes:
label: Description
description: |
Please provide a brief description of the alternative,
one to 5 sentences which will be displayed along with the name.
validations:
required: true
- type: textarea
id: reasoning
attributes:
label: Reason for adding
description: |
Why is this alternative necessary? Don't use opinions and try to be objective.
- type: input
id: url
attributes:
label: URL
description: URL of the alternative you wish to add
placeholder: https://example-alternative.org
validations:
required: true
- type: input
id: repo
attributes:
label: Repository
description: Source Code repository for the alternative
placeholder: https://github.com/example/alternative
- type: input
id: fdroid
attributes:
label: F-Droid ID
description: If available on F-Droid, the ID of the app
placeholder: org.alternative.example
- type: textarea
id: other_links
attributes:
label: Other Links
description: If applicable or helpful, other links related to the alternative
- type: checkboxes
id: eyes
attributes:
label: Is this alternative hosted in a country that performs surveillance?
description: |
For more info on 5/9/14 eyes, please check here: https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/
Usually only one applies, but you may select more than one.
options:
- label: 5 Eyes
- label: 9 Eyes
- label: 14 Eyes
- type: dropdown
id: pricing
attributes:
label: Is there a cost to use this alternative?
options:
- Free
- Paid
- Freemium (Free tier but paid upgrades)
- type: dropdown
id: self-hosting
attributes:
label: Please indicate if self-hosting is possible, not possible, or the only option
options:
- Possible
- Not possible
- Only self-hosted
- type: textarea
id: additional_details
attributes:
label: Additional Details
description: Use this space to add any other relevant information about the alternative

View File

@ -1,43 +0,0 @@
---
name: Fix/update alternative
description: Fix or update an existing alternative.
title: "[FIX] Alternative name here"
labels:
- fix
body:
- type: markdown
attributes:
value: |
## Fixing details about an alternative in the list
Fill out to the best of your ability.
If an item is not applicable, feel free to ignore it.
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: "**I have read the guidelines in [CONTRIBUTING.md](../blob/master/CONTRIBUTING.md)**"
required: true
- label: Include my name in [CONTRIBUTORS.md](../blob/master/CONTRIBUTORS.md)
- label: I am affiliated with this alternative
- type: input
id: alternative_name
attributes:
label: Alternative name
description: Which alternative needs to be fixed or updated?
- type: textarea
id: error
attributes:
label: Error
description: What might be wrong or what should be updated?
- type: textarea
id: proposed_changes
attributes:
label: Proposed changes
description: What do you suggest be changed?
- type: textarea
id: additional_details
attributes:
label: Additional details
description: Add any additional details here.

View File

@ -1,36 +0,0 @@
---
name: Remove alternative
description: Provide details on why an existing alternative should be removed.
title: "[REMOVE] Alternative name here"
labels:
- remove
body:
- type: markdown
attributes:
value: |
## Removing an existing alternative from the list
Fill out to the best of your ability.
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: "**I have read the guidelines in [CONTRIBUTING.md](../blob/master/CONTRIBUTING.md)**"
required: true
- label: Include my name in [CONTRIBUTORS.md](../blob/master/CONTRIBUTORS.md)
- label: I am affiliated with this alternative
- type: input
id: alternative_name
attributes:
label: Alternative name
description: Which alternative needs to be removed?
validations:
required: true
- type: textarea
id: reason
attributes:
label: Reason
description: Why should this alternative be removed?
validations:
required: true

View File

@ -1,7 +1 @@
blank_issues_enabled: false
contact_links:
- name: Other
url: https://github.com/tycrek/degoogle/discussions
about: >
Have a question or other topic of discussion that isn't adding/removing/modifying an alternative?
The "Discussions" forum is where you want to start.
blank_issues_enabled: false

View File

@ -0,0 +1,25 @@
---
name: Fix/update alternative
about: Fix or update an exsting alternative.
title: "[FIX] Fix/update alternative"
labels: 'fix'
assignees: ''
---
[//]: # ( Fill out to the best of your ability. )
[//]: # ( If an item is not applicable, feel free to leave it blank. )
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
### Checklist
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
- [ ] **I am affiliated with this alternative**
### Details
- **Alternative name**: Enter name here. Required
- **Error**: Enter what might be wrong or what should be updated
- **Proposed changes**: enter what you suggest should be added
- **Additional details**: any additional details

View File

@ -0,0 +1,46 @@
---
name: New alternative
about: Add a new alternative for a Google service
title: "[NEW] New alternative"
labels: 'new'
assignees: ''
---
[//]: # ( Fill out to the best of your ability. )
[//]: # ( If an item is not applicable, such as HTTPS for an App, feel free to leave it blank. )
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
### Checklist
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
- [ ] **I am affiliated with this alternative**
### Details
- **General**
- **Alternative name**: Alternative name here. Required
- **Alternative URL**: Alternative URL here. Required
- **5/9/14 eyes**: yes/no/unknown
- **Description**: detail why this alternative should be added
- **FLOSS**
- Repository: link to source code repository
- Active: yes/no (any branch in source repo active within past four months, excluding translations)
- Download: F-Droid/Direct/Play Store (Direct is direct downloads, such as GitHub releases)
- Price: free/paid/freemium (free: no payments at all; paid: no free tier excluding trials; freemium: any mix of free tier and paid plans)
- Self-host: yes/no/only (use "only" if the only option is self hosting; for example, LibreOffice Online)
- **Encryption**
- HTTPS: yes/no
- E2EE: yes/no/optional
- Modern Encryption: yes/no
- **Transparency**
- Public ownership: yes/no [Parent company name](https://parent.company.url)
- 3rd-party audits: yes/no [Link to audit history](https://audit.history.url)
- **Privacy**
- Anonymous payments: yes/no (these types of payments can include cash, cryptocurrency, gift cards)
- Analytics: yes/no (type of analytics)
- Captcha: recaptcha/hcaptcha/other
- **Extras**
- .onion address: .onion address
- Warrant canary: yes/no [Link to canary](https://warrant.canary.url)

20
.github/ISSUE_TEMPLATE/other.md vendored Normal file
View File

@ -0,0 +1,20 @@
---
name: Other
about: Anything else that does not fit the other templates. Blank issues are not permitted.
title: "[OTHER]"
labels: 'other'
assignees: ''
---
[//]: # ( Fill out to the best of your ability. )
[//]: # ( If an item is not applicable, feel free to leave it blank. )
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
### Checklist
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
- [ ] **I am affiliated with this alternative**
### Details

View File

@ -0,0 +1,23 @@
---
name: Remove alternative
about: Provide details on why an existing alternative should be removed.
title: "[REMOVE] Remove alternative"
labels: 'remove'
assignees: ''
---
[//]: # ( Fill out to the best of your ability. )
[//]: # ( If an item is not applicable, feel free to leave it blank. )
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
### Checklist
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
- [ ] **I am affiliated with this alternative**
### Details
- **Alternative name**: Enter name here. Required
- **Reason**: detail why this alternative should be removed. Include any relevant links

View File

@ -1,15 +0,0 @@
<!-- If your Pull Request is related to an alternative, make sure there is a corresponding Issue for discussion. -->
| Checklist | |
| --------- | - |
| **I have read the guidelines in [CONTRIBUTING.md]** | yes/no |
| Include my name in [CONTRIBUTORS.md] | yes/no |
| I am affiliated with this alternative (if applicable) | yes/no |
### Details
<!-- Optional if details exist in a linked Issue. If that is the case, link to the Issue here. -->
[CONTRIBUTING.md]: ../blob/master/CONTRIBUTING.md
[CONTRIBUTORS.md]: ../blob/master/CONTRIBUTORS.md

View File

@ -0,0 +1,16 @@
---
name: New pull request
about: Create a new pull request
title: ''
labels: ''
assignees: ''
---
[//]: # ( Every alternative in your pull request MUST have an linked issue)
### Checklist
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md) (or I have added myself in this PR)**
- [ ] **I am affiliated with this alternative (if applicable)**

View File

@ -25,7 +25,7 @@ jobs:
git add README.md
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git commit --allow-empty -m "Generated README.md"
git commit -m "Generated README.md"
- name: Push
uses: ad-m/github-push-action@master
with:
@ -37,4 +37,4 @@ jobs:
REDDIT_USER: ${{ secrets.REDDIT_USER}}
REDDIT_PASS: ${{ secrets.REDDIT_PASS}}
REDDIT_CLIENT_ID: ${{ secrets.REDDIT_CLIENT_ID}}
REDDIT_CLIENT_SECRET: ${{ secrets.REDDIT_CLIENT_SECRET}}
REDDIT_CLIENT_SECRET: ${{ secrets.REDDIT_CLIENT_SECRET}}

View File

@ -1,35 +1,20 @@
# Contributing
###### Last revised: August 9th, 2021
###### Last revised: September 29th, 2020
###### Templates revised: August 9th, 2021
## General rules
## General
1. **English only** for issues & pull requests.
2. **Do not edit `README.md`!** This file is automatically generated.
3. Personal opinions will **not** be considered when adding or removing an alternative. Instead, provide links to articles with details.
4. **Use the templates** when submitting an Issue or Pull Request. Blank Issues/PRs are not allowed.
2. As of May 25 2020, the `README.md` file is **automatically generated**. Instead, edit anything in `yaml/` or `md/`.
3. Limit yourself to **one** alternative per Issue. A pull request can have multiple alternatives as long as there is an Issue for each.
4. Personal opinions will **not** be considered when adding or removing an alternative. Instead, provide links to articles with details.
5. If you submitted a change that made it into the guide but don't have your Reddit or GitHub username in the [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md) list, open an issue or pull request so we can fix it, or update your existing issue with the request. Alternatively, if your username is on the list and you do *not* want it there, feel free to request this as well.
## How to submit a change
## Issue & pull request templates
### A: I am not familiar with GitHub or Pull Requests
1. Using the templates is **required**. Blank issues or pull requests are not allowed. Circumventing this by removing the text from a template will result in your Issue being closed without question.
2. Not every field is required but fill out as much info as you can. This makes it easier for maintainers to quickly approve changes.
1. Open a [new Issue].
2. Select a template to use. If in doubt, use **Other**.
3. Fill out the information to the best of your ability.
4. When you are finished, click **Submit new issue**.
## Pull requests
### B: I have used GitHub Pull Requests
1. Create your Pull Request with your changes.
- Remember to **not** edit `README.md`!
- As with Issues, fill out the template as best you can.
2. For PR's relating to alternatives, please follow the steps above to also create an Issue for discussion. Simple PR's that are unrelated to a specific alternative may not require an Issue. If in doubt, create an **Other** Issue.
## I contributed but I am not in the list (or) I do not want to be in the list anymore
If you submitted a change that made it into the guide but don't have your Reddit or GitHub username in the [CONTRIBUTORS.md] list, open an issue or pull request so I can fix it. Alternatively, if your username is on the list and you do *not* want it there, feel free to request this as well.
[new Issue]: https://github.com/tycrek/degoogle/issues/new/choose
[CONTRIBUTORS.md]: https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md
1. All pull requests **must** have an issue linked for discussion. Pull requests can become cluttered very quickly and are not a good place for discussion.

View File

@ -1,6 +1,6 @@
Thanks to everyone here for contributing in some way! (usernames are in no particular order).
### GitHub:
GitHub:
- [Fabian Cook](https://github.com/fabiancook)
- [Alexander Schaap](https://github.com/aschaap)
@ -40,12 +40,14 @@ Thanks to everyone here for contributing in some way! (usernames are in no parti
- [@notpushkin](https://github.com/notpushkin)
- [@onlyjob](https://github.com/onlyjob)
- [@marco3mt](https://github.com/marco3mt)
- [@FreddyMarsden](https://github.com/FreddyMarsden)
- [@E5dZEUpc3BKaJrHnQVZd5zE](https://github.com/E5dZEUpc3BKaJrHnQVZd5zE)
- [@woutfeys](https://github.com/woutfeys)
- [@virtadpt](https://github.com/virtadpt)
- [@compressstudio](https://github.com/compressstudio)
- [@PalmoliveDev](https://github.com/PalmoliveDev)
- [@mahdi1234](https://github.com/mahdi1234)
- [@codingepaduli](https://github.com/codingepaduli)
- [@kdkasad](https://github.com/kdkasad)
- [@resto1231](https://githgithub.com/resto1231)
- [@kdrag0n](https://github.com/kdrag0n)
@ -57,37 +59,9 @@ Thanks to everyone here for contributing in some way! (usernames are in no parti
- [@m0yP](https://github.com/m0yP)
- [@mceachen](https://github.com/mceachen)
- [@adam-sroka](https://github.com/adam-sroka)
- [@freddy-m](https://github.com/freddy-m)
- [@Cristy94](https://github.com/Cristy94)
- [@rkingett](https://github.com/rkingett)
- [@komape](https://github.com/komape)
- [@jefersonralmeida](https://github.com/jefersonralmeida)
- [@codedust](https://github.com/codedust)
- [@shivasagarrao](https://github.com/shivasagarrao)
- [@0xflotus](https://github.com/0xflotus)
- [@J053Fabi0](https://github.com/J053Fabi0)
- [@trexx](https://github.com/trexx)
- [@anthonynsimon](https://github.com/anthonynsimon)
- [@timbuening](https://github.com/timbuening)
- [@infectormp](https://github.com/infectormp)
- [@vivekmiyani](https://github.com/vivekmiyani)
- [@evrifaessa](https://github.com/evrifaessa)
- [@MahbodHastam](https://github.com/MahbodHastam)
- [@aa1874](https://github.com/aa1874)
- [@bgrgndzz](https://github.com/bgrgndzz)
- [@samcross021](https://github.com/samcross021)
- [@Shahin-rmz](https://github.com/Shahin-rmz)
- [@vishnukvmd](https://github.com/vishnukvmd)
- [@Joshuasony](https://github.com/Joshuasony)
- [@BobIsMyManager](https://github.com/BobIsMyManager)
- [@itforweb666](https://github.com/itforweb666)
- [@seanking2919](https://github.com/seanking2919)
- [@FireMasterK](https://github.com/FireMasterK)
- [@julianfairfax](https://github.com/julianfairfax)
- [@ACK-J](https://github.com/ACK-J)
- [@joebudi](https://github.com/joebudi)
- [@m0yP](https://github.com/m0yP)
### Reddit:
Reddit:
- u/SheepKid12
- u/yieldingTemporarily

View File

@ -14,9 +14,8 @@ Official mirrors are the main sources and are maintained by me (@tycrek). Commun
- [GitLab mirror](https://gitlab.com/SheepKid12/degoogle) from u/SheepKid12
- [Gitea mirror](https://git.xerbo.net/Xerbo/degoogle) from [@Xerbo](https://github.com/Xerbo)
- [Gitea mirror](https://git.mirkodi.tech/mirk0dex/degoogle) from [@mirk0dex (Gitea)](https://git.mirkodi.tech/mirk0dex)
- [BookRefine Publishing](https://bookrefine.com/degoogle/) (thanks @GreyLivesMatter for the updated link)
## Non-english mirrors
- [Turkish/Türk](https://github.com/melikechan/degoogle-turkish) from [@melikechan](https://github.com/melikechan)
- [Italian/Italiano](https://gitea.it/devol/degooglizzazione) from [@devol (Gitea)](https://gitea.it/devol)
- [German/Deutsch](https://github.com/arentro/degoogle_german) from [@arentro](https://github.com/arentro)

555
README.md

File diff suppressed because it is too large Load Diff

151
_build.js
View File

@ -1,6 +1,6 @@
// Build tool for generating README.md
const { EOL } = require('os');
const os = require('os');
const path = require('path');
const fs = require('fs-extra');
const moment = require('moment');
@ -24,11 +24,43 @@ const BUILD_SECTION = {
news: () => generatePublications('News articles', 'news'),
lighterSide: () => readFile('md/_lighterSide.md'),
closingRemarks: () => readFile('md/_closingRemarks.md')
};
}
// Button that brings the user to the top of the page
const BACK_TO_TOP = '[![Back to top](https://img.shields.io/badge/Back%20to%20top-lightgrey?style=flat-square)](#index)';
/**
* Main method
*/
function __main__() {
// dgSectionData will be join at the end and represents the full contents of README.md
let dgSectionData = [];
// Add all the sections
dgSectionData.push(BUILD_SECTION.header());
dgSectionData.push(BUILD_SECTION.index());
dgSectionData.push(BUILD_SECTION.contributing());
dgSectionData.push(BUILD_SECTION.browserExtensions());
dgSectionData.push(BUILD_SECTION.disclaimer());
dgSectionData.push(BUILD_SECTION.webBasedProducts());
dgSectionData.push(BUILD_SECTION.operatingSystems());
dgSectionData.push(BUILD_SECTION.desktopApps());
dgSectionData.push(BUILD_SECTION.mobileApps());
dgSectionData.push(BUILD_SECTION.hardware());
dgSectionData.push(BUILD_SECTION.useful());
dgSectionData.push(BUILD_SECTION.resources());
dgSectionData.push(BUILD_SECTION.books());
dgSectionData.push(BUILD_SECTION.blogs());
dgSectionData.push(BUILD_SECTION.news());
dgSectionData.push(BUILD_SECTION.lighterSide());
dgSectionData.push(BUILD_SECTION.closingRemarks());
// Write to the README file
fs.writeFileSync(path.join(__dirname, 'README.md'), dgSectionData.join(os.EOL + os.EOL));
console.log('Done!');
}
/**
* Synchronously reads a file using fs-extra and path.join()
* @param {String} filename The file to read
@ -51,7 +83,14 @@ function readYaml() {
*/
function generateCategorySection(header, data) {
if (!data) return '';
return `## ${header}${EOL}${BACK_TO_TOP}${EOL}${EOL}`.concat(Object.values(data).map((value) => `${generateServiceSection(value)}${EOL}${EOL}`).join(''))
// Set the header to HTML <h5>
let categorySection = '## ' + header + os.EOL + BACK_TO_TOP + os.EOL + os.EOL;
// Generate service sections for this category
Object.keys(data).forEach((key) => categorySection = categorySection.concat(generateServiceSection(data[key]) + os.EOL + os.EOL));
return categorySection;
}
/**
@ -60,50 +99,36 @@ function generateCategorySection(header, data) {
*/
function generateServiceSection(data) {
// Start the section with an <h4> header
let serviceSection = `#### ${data[0].title + EOL + EOL}`;
// Prep section notes
let notes = EOL + '';
let serviceSection = `#### ${data[0].title + os.EOL + os.EOL}`;
let notes = os.EOL + '';
// If there is data to be displayed, add the start of a Markdown table
const tableHeader = (data.filter((d) => 'name' in d).length === 0)
? `No known alternatives.${EOL}`
: `| Name | Eyes | Description |${EOL}| ---- | ---- | ----------- |${EOL}`;
// Add the header to the section body
let tableHeader = `| Name | Eyes | Description |${os.EOL}| ---- | ---- | ----------- |${os.EOL}`;
if (data.filter(d => 'name' in d).length == 0) tableHeader = `No known alternatives.${os.EOL}`;
serviceSection = serviceSection.concat(tableHeader);
// Iterate over each alternative service and add it to the table
data.forEach((item) => {
data.forEach(item => {
// If the object has length one, it's either title or note
if (Object.keys(item).length == 1) {
if (!item.notes) return;
else item.notes.forEach((note) => notes = notes.concat(`- *${note.trim()}*${EOL}`));
else item.notes.forEach((note) => notes = notes.concat(`- *${note.trim()}*${os.EOL}`));
} else {
// Build the cells for the table
let name = `[${item.name}](${item.url})`;
let eyes = item.eyes ? `**${item.eyes}-eyes**` : '';
let text = item.text.trim();
// Append the F-Droid badge to the name
if (item.fdroid) name = name.concat('<br/>', fdroidLink(item.fdroid));
// Append the Repo badge to the name
if (item.repo) name = name.concat('<br/>', repoLink(item.repo));
// Append the Star badge to the name
if (item.repo) name = name.concat('<br/>', starBadge(item.repo));
if (item.fdroid) name = name.concat(' ' + fdroidLink(item.fdroid));
// Build the row
const tableItem = `| ${name} | ${eyes} | ${text} |${EOL}`;
let tableItem = `| ${name} | ${eyes} | ${text} |`;
// Add the row to the table
serviceSection = serviceSection.concat(tableItem);
serviceSection = serviceSection.concat(tableItem + os.EOL);
}
});
return `${serviceSection}${notes}`;
return serviceSection + notes;
}
/**
@ -111,30 +136,7 @@ function generateServiceSection(data) {
* @param {String} appId The package identifier on F-Droid
*/
function fdroidLink(appId) {
return `[![F-Droid](https://img.shields.io/f-droid/v/${appId}?style=flat-square&logo=f-droid)](https://f-droid.org/en/packages/${appId}/)`;
}
/**
* Returns a badge acting as a link to a source repository for an app.
* @param {String} repo The repository url
*/
function repoLink(repo) {
const repoURL = new URL(repo);
let repoHost = path.basename(repoURL.hostname, path.extname(repoURL.hostname));
if (repoHost.includes(".")) repoHost = path.extname(repoHost).replace(".", "");
return `[![Repo](https://img.shields.io/badge/open-source-3DA639?style=flat-square&logo=${repoHost})](${repo})`;
}
/**
* Returns a badge displaying the number of GitHub Stars for a repository.
* @param {String} repo The repository url
*/
function starBadge(repo) {
if (repo.startsWith('https://github.com/')) {
const [user, repoName] = repo.split('github.com/')[1].split('/');
if (!repoName || repoName === '') return '';
return `![GitHub Repo stars](https://img.shields.io/github/stars/${user}/${repoName}?logo=github&style=flat-square)`;
} else return '';
return `[![F-Droid](https://img.shields.io/f-droid/v/${appId}?style=flat-square)](https://f-droid.org/en/packages/${appId}/)`;
}
/**
@ -142,7 +144,9 @@ function starBadge(repo) {
* @param {String} link URL to extension WITHOUT trailing slash
*/
function addonLink(link) {
return (link.includes('addons.mozilla.org')) ? `![Mozilla Add-on](https://img.shields.io/amo/users/${link.split('/').pop()}?style=flat-square)` : '';
if (!link.includes('addons.mozilla.org')) return '';
let addonId = link.split('/')[link.split('/').length - 1]
return `![Mozilla Add-on](https://img.shields.io/amo/users/${addonId}?style=flat-square)`;
}
/**
@ -150,29 +154,46 @@ function addonLink(link) {
* @param {String|Number} date Date of publication
*/
function dateBadge(date) {
return `![Published](https://img.shields.io/badge/${date.toString().replace(/\-/g, '--')}-informational?style=flat-square)`;
return `![Published](https://img.shields.io/badge/${date.toString().replace(/\-/g, '--')}-informational?style=flat-square)`
}
/**
* Generates a table with browser extensions and their descriptions
*/
function generateBrowserExtensions() {
return `# Browser extensions${EOL + EOL}| Name | Description |${EOL}| ---- | ----------- |${EOL}`
.concat(YAML.parse(fs.readFileSync(path.join(__dirname, 'yaml/browserExtensions.yml')).toString())
.map(({ name, text, url }) => `| [${name}](${url}) ${addonLink(url)} | ${text.trim()} |${EOL}`).join(''));
let extensions = `# Browser extensions${os.EOL + os.EOL}| Name | Description |${os.EOL}| ---- | ----------- |${os.EOL}`;
let data = YAML.parse(fs.readFileSync(path.join(__dirname, 'yaml/browserExtensions.yml')).toString());
data.forEach(item => {
let name = `[${item.name}](${item.url})`;
let text = item.text.trim();
let badge = addonLink(item.url);
let tableItem = `| ${name + ' ' + badge} | ${text} |`;
extensions = extensions.concat(tableItem + os.EOL);
});
return extensions;
}
/**
* Generates sections for Books, Blogs, and News
* @param {String} pubTitle
* @param {String} title
* @param {String} filename
*/
function generatePublications(pubTitle, filename) {
return `## ${pubTitle} ${EOL + BACK_TO_TOP + EOL + EOL}| Title | Published | Author |${EOL}| ----- | --------- | ------ |${EOL}`
.concat(YAML.parse(fs.readFileSync(path.join(__dirname, `yaml/${filename}.yml`)).toString())
.map(({ title, url, date, author }) => `| [${title}](${url}) | ${dateBadge(date)} | ${author.trim()} |${EOL}`).join(''));
function generatePublications(title, filename) {
let publications = `## ${title} ${os.EOL + BACK_TO_TOP + os.EOL + os.EOL}| Title | Published | Author |${os.EOL}| ----- | --------- | ------ |${os.EOL}`;
let data = YAML.parse(fs.readFileSync(path.join(__dirname, `yaml/${filename}.yml`)).toString());
data.forEach(item => {
let name = `[${item.title}](${item.url})`;
let author = item.author.trim();
let tableItem = `| ${name} | ${dateBadge(item.date)} | ${author} |`;
publications = publications.concat(tableItem + os.EOL);
});
return publications;
}
// ! Generate README.md
fs.writeFileSync(path.join(__dirname, 'README.md'), Object.values(BUILD_SECTION).map((section) => section()).join(`${EOL}${EOL}`));
console.log('Done!');
__main__();

View File

@ -4,75 +4,88 @@ const fetch = require('node-fetch'); // Make calls to Reddit from Node.js
const qs = require('qs'); // Properly build a query for node-fetch POST
const moment = require('moment'); // Time-related functions
//#region constants
// REDDIT_: For authentication with Reddit API. Oauth MUST be used. ID and Secret come from a "script" app type.
const REDDIT_USER = process.env.REDDIT_USER || 'username';
const REDDIT_PASS = process.env.REDDIT_PASS || 'password';
const REDDIT_CLIENT_ID = process.env.REDDIT_CLIENT_ID || 'clientid';
const REDDIT_CLIENT_SECRET = process.env.REDDIT_CLIENT_SECRET || 'clientsecret';
// Initial basic authorization for getting the Oauth token
const BASIC_AUTH = `Basic ${Buffer.from(REDDIT_CLIENT_ID + ':' + REDDIT_CLIENT_SECRET).toString('base64')}`;
// WIKI_: For the Reddit Wiki
const WIKI_SUBREDDIT = 'privacy';
const WIKI_PAGE = 'de-google';
const WIKI_REASON = 'Automated edit from GitHub repo: https://github.com/tycrek/degoogle';
// Endpoints for each of our fetches to Reddit
const ENDPOINTS = {
revisions: `https://old.reddit.com/r/${WIKI_SUBREDDIT}/wiki/revisions/${WIKI_PAGE}.json`,
token: 'https://www.reddit.com/api/v1/access_token',
edit: `https://oauth.reddit.com/r/${WIKI_SUBREDDIT}/api/wiki/edit`
};
// Helps POST data be submitted properly
const CONTENT_TYPE = 'application/x-www-form-urlencoded';
//#endregion
// Update the wiki
Promise.all([getLastRevision(), getToken()])
.then(([lastId, token]) => putWiki(lastId, token))
.catch((err) => (console.error(err), process.exit(1)));
updateWiki();
//#region functions
/**
* Update the Reddit wiki
*/
function updateWiki() {
// Endpoints for each of our fetches to Reddit
let endpoints = {
revisions: `https://old.reddit.com/r/${WIKI_SUBREDDIT}/wiki/revisions/${WIKI_PAGE}.json`,
token: 'https://www.reddit.com/api/v1/access_token',
edit: `https://oauth.reddit.com/r/${WIKI_SUBREDDIT}/api/wiki/edit`
};
// Initial basic authorization for getting the Oauth token
let basicAuth = `Basic ${Buffer.from(REDDIT_CLIENT_ID + ':' + REDDIT_CLIENT_SECRET).toString('base64')}`;
let lastId, token;
getLastRevision(endpoints.revisions)
.then((mLastId) => lastId = mLastId)
.then(() => getToken(endpoints.token, basicAuth))
.then((mToken) => token = mToken)
.then(() => putWiki(endpoints.edit, lastId, token))
.catch((err) => (console.error(err), process.exit(1)));
}
/**
* Get the last revision ID on the Wiki. Required otherwise editing the wiki fails
* @param {String} endpoint Endpoint of where to get the ID's
*/
function getLastRevision() {
return new Promise((resolve, reject) =>
fetch(ENDPOINTS.revisions)
function getLastRevision(endpoint) {
return new Promise((resolve, reject) => {
fetch(endpoint)
.then((response) => response.json())
.then((json) => json.data.children[0].id) // children[0] is the most recent edit
.then(resolve)
.catch(reject));
.then((lastId) => resolve(lastId))
.catch((err) => reject(err));
});
}
/**
* Gets an Oauth token used to edit the Wiki
* @param {String} endpoint Endpoint of where to get the token
* @param {String} auth Initial authorization data to get the better Oauth data
*/
function getToken() {
return new Promise((resolve, reject) =>
fetch(ENDPOINTS.token, {
function getToken(endpoint, auth) {
return new Promise((resolve, reject) => {
fetch(endpoint, {
method: 'POST',
headers: { 'Authorization': BASIC_AUTH, 'Content-Type': CONTENT_TYPE },
headers: { 'Authorization': auth, 'Content-Type': CONTENT_TYPE },
body: qs.stringify({ grant_type: 'password', username: REDDIT_USER, password: REDDIT_PASS })
})
.then((response) => response.json())
.then(({ access_token }) => resolve(access_token))
.catch(reject));
.then((json) => json.access_token)
.then((token) => resolve(token))
.catch((err) => reject(err));
});
}
/**
* Post the contents from the README into the wiki
* @param {String} endpoint Endpoint for editing the wiki
* @param {String} lastId Revision ID for the Wiki
* @param {String} token Oauth token for authenticating with the Reddit API
*/
function putWiki(lastId, token) {
return new Promise((resolve, reject) =>
fetch(ENDPOINTS.edit, {
function putWiki(endpoint, lastId, token) {
return new Promise((resolve, reject) => {
fetch(endpoint, {
method: 'POST',
headers: { 'Authorization': `bearer ${token}`, 'Content-Type': CONTENT_TYPE },
body: qs.stringify({
@ -84,10 +97,11 @@ function putWiki(lastId, token) {
})
.then((response) => response.json())
.then((json) => {
if (Object.keys(json).length === 0) resolve();
if (Object.keys(json).length == 0) resolve();
else throw Error(json);
})
.catch(reject));
.catch((err) => reject(err));
});
}
/**
@ -103,5 +117,4 @@ function fixContent(content) {
content = content.replace(/-informational\?style=flat-square\)/g, '**');
return content;
} // * If this is highlighted weirdly, it's because of the 'updated timestamp' regex, don't worry about it
//#endregion
}

1
dont-merge-this Normal file
View File

@ -0,0 +1 @@
okay?

View File

@ -4,8 +4,4 @@ It's a shame that Google, with their immense resources, power, and influence, do
Hopefully this guide can serve as a starting point for those new to privacy, or be a good refresher for the experts.
Good luck and stay safe!
## Stargazers over time
[![Stargazers over time](https://starchart.cc/tycrek/degoogle.svg)](https://starchart.cc/tycrek/degoogle)
Good luck and stay safe!

View File

@ -9,4 +9,4 @@ If you want to help out with the project, here are some ideas (submit **Issues**
- Host a mirror or clone the [repo](https://github.com/tycrek/degoogle). If you host a mirror, let me know and I can add it to the mirrors list.
- Anything else relating to any part of this guide, whether it's Google related or not.
When contributing, **please follow the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**.
When contributing, **please try to follow the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**.

View File

@ -3,16 +3,11 @@
### *Disclaimer*
1. Only **privacy/security** focused alternatives will be suggested.
2. Many replacements are based off [this Wikipedia article (List of Google products)][wiki]
2. Many replacements are based off [this Wikipedia article (List of Google products)](https://en.wikipedia.org/wiki/List_of_Google_products)
3. Products from companies such as Microsoft, Apple, Yahoo, Amazon, etc. will *not* be recommended unless there is a very good reason to. This includes companies/apps/services they own.
4. Controversial services will have a disclaimer attached if needed.
5. [5-eyes, 9-eyes, and 14-eyes][eyes] services will be listed and marked as such. Both the location the company is registered and the server IP are taken into consideration.
| Eyes | Countries |
| :--: | :---------: |
| **5** | Australia, Canada, New Zealand, UK, USA |
| **9** | Denmark, France, Netherlands, Norway |
| **14** | Germany, Belgium, Italy, Sweden, Spain |
[wiki]: https://en.wikipedia.org/wiki/List_of_Google_products
[eyes]: https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/#h-five-eyes
5. 5-eyes, 9-eyes, and 14-eyes services **will** be listed, and marked as such. This means the company, not the server IP.
- **5**: Australia, Canada, New Zealand, UK, USA
- **9**: Denmark, France, Netherlands, Norway
- **14**: Germany, Belgium, Italy, Sweden, Spain
- [What are 5-eyes, 9-eyes, and 14-eyes?](https://www.privacytools.io/providers/#ukusa)

View File

@ -9,10 +9,9 @@
- *Shoshana Zuboff on surveillance capitalism | VPRO Documentary* - [Invidious instance](https://yewtu.be/watch?v=hIXhnWUmMvw) and [Hooktube](https://hooktube.com/watch?v=hIXhnWUmMvw)
- Podcasts:
- [Darknet Diaries](https://darknetdiaries.com/) (by Jack Rhysider) - Highlights real-life hackers and their stories. Covers privacy topics a fair bit.
- [The WAN Show](https://youtube.com/playlist?list=PL8mG-RkN2uTw7PhlnAr4pZZz2QubIbujH) (Linus Tech Tips) - Not specifically privacy, but they cover all sorts of tech news.
- [The WAN Show](https://linustechtips.libsyn.com/) (Linus Tech Tips) - Not specifically privacy, but they cover all sorts of tech news.
- [The Privacy, Security, & OSINT Show](https://inteltechniques.com/podcast.html) - "This weekly podcast presents ideas to help you become digitally invisible, stay secure from cyber threats, and make you a better online investigator."
- [Security Now!](https://www.grc.com/SecurityNow.htm) - "TechTV's Leo Laporte and I spend somewhat shy of two hours each week to discuss important issues of personal computer security." (Thanks u/Abaddon182)
- [Surveillance Report](https://surveillancereport.tech/) - "Weekly security and privacy news - Presented by Techlore & The New Oil "
- Other:
- [xkcd](https://xkcd.com/) - They have comics for *everything*.
- System32 Comics [Instagram](https://www.instagram.com/system32comics/) and [Reddit](https://www.reddit.com/r/System32Comics/) - Comedic computer comics.

View File

@ -1,58 +1,37 @@
## Resources
Everything you need to become a privacy wizard. This section has two subsections: The first has links with self-explanatory titles, the second has more detailed descriptions.
Everything you need to become a Privacy Wizard.
#### Subsection 1
- [Android Privacy Guide - Take Control Of Your Data (GitLab)](https://gitlab.com/Attedz/AndroidPrivacyGuide)
- [DuckDuckGo's privacy newsletter](https://duckduckgo.com/newsletter)
- [EFF's Surveillance Self-Defense (eff.org)](https://ssd.eff.org/)
- [Everything You Need to Know About Password Managers](https://outline.com/NC69FD)
- [Firefox: Privacy Related "about:config" Tweaks](https://privacyguides.org/browsers/#about_config)
- [Privacy Tools](https://www.privacytools.io/) (thanks u/yieldingTemporarily)
- [ethical.net](https://ethical.net/) (thanks u/yieldingTemporarily)
- [AlternativeTo](https://alternativeto.net/) - Find alternatives for software. Used extensively to build this guide. Also check out [Switching.software](https://switching.software/) (thanks @mynamesleon)
- [Framasoft](https://framasoft.org/en/) - Lots of alternatives and software. Too many to fit into the list. Also check out [this link](https://degooglisons-internet.org/en/). Thanks @NicolasPA
- [r/Privacy wiki](https://old.reddit.com/r/privacy/wiki/index)
- [r/VPN](https://old.reddit.com/r/VPN/) - Read the sidebar and [wiki](https://old.reddit.com/r/VPN/wiki/index) to learn more about why you should consider using a VPN. I personally use [Mullvad](https://mullvad.net) but do your own research before choosing.
- [Four Methods to Create a Secure Password You'll Actually Remember](https://outline.com/XuMTFA)
- [How to create a strong password (and remember it)](https://outline.com/dqfuqL)
- [How to delete remembered passwords (WikiHow)](http://www.wikihow.com/Delete-Remembered-Passwords)
- [How to disable Telemetry and Data Collection in Windows 10 (Winaero)](https://winaero.com/blog/how-to-disable-telemetry-and-data-collection-in-windows-10/)
- [How to permanently delete a Facebook account (Delete Facebook)](https://deletefacebook.com/).
- [How to permanently delete a Facebook account (WikiHow)](https://www.wikihow.com/Permanently-Delete-a-Facebook-Account)
- [HTTP vs. HTTPS: What's the Difference and Why Should You Care? (Entrepreneur)](https://www.entrepreneur.com/article/281633)
- [Linux workstation security checklist (GitHub)](https://github.com/lfit/itpol/blob/master/linux-workstation-security.md)
- [Manage Windows 10 Telemetry and Data Collection settings (The Windows Club)](https://www.thewindowsclub.com/windows-10-telemetry)
- [Multi-factor authentication (Wikipedia)](https://en.wikipedia.org/wiki/Multi-factor_authentication)
- [Remove bloatware from Android without root (XDA)](https://www.xda-developers.com/uninstall-carrier-oem-bloatware-without-root-access/)
- [Spread Privacy - The Official DuckDuckGo Blog](https://spreadprivacy.com/)
- [The what, why, and when of multi-factor authentication (MFA)](https://outline.com/8gL8ZG)
- [They Track You: A website to raise awareness of online privacy (TheyTrackYou.com)](https://theytrackyou.com/)
- [user.js - Firefox configuration hardening (GitHub)](https://github.com/pyllyukko/user.js)
- [What are 5-eyes, 9-eyes, and 14-eyes? (RestorePrivacy)](https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/)
- [What is GDPR and how will it affect you? (Outline/The Guardian)](https://outline.com/exmSpf)
- [What is GDPR? Everything you need to know about the new EU data laws (Outline/TechRadar)](https://outline.com/6sjd76)
- [What is Tor and should I use it?](https://outline.com/JRCscH)
- [Why You Really Should Put Tape Over Your Webcam](https://outline.com/fYCu98)
- [Windows 10 Privacy Guide (fdossena.com)](https://fdossena.com/?p=w10debotnet/index_1903.frag)
- [7 Reasons to Use a Third-Party DNS Service](https://outline.com/8jsWXw)
- Use [DNSPerf](https://www.dnsperf.com/#!dns-resolvers) to see which one is fastest for you.
#### Subsection 2
- [AlternativeTo](https://alternativeto.net/) is a free service that helps you find better alternatives to the products you love and hate. Used extensively to build this guide.
- [block-all-google.sh](https://github.com/wesaphzt/block-all-google) is a script for blocking everything Google at the network level. This can and probably will break other alternatives that rely on Google to serve content.
- [Databunker](https://databunker.org/) is a network-based, self-hosted, GDPR compliant, secure database for personal data or PII.
- [ethical.net](https://ethical.net/) is a not-for-profit project building a collaborative, online directory of ethical companies of all kinds.
- [Firefox Profilemaker](https://ffprofile.com/) is a tool to help you create a Firefox profile with the defaults you like.
- [Fix Windows Privacy](https://modzero.github.io/fix-windows-privacy/) is a tool to disable privacy breaches on Windows 10.
- [Framasoft](https://framasoft.org/en/) is a collection of alternative software. Too many to fit elsewhere in the list.
- [Go Incognito](https://techlore.tech/goincognito.html) A guide to security, privacy, and anominity.
- [Go FOSS](https://www.gofoss.today/) is a guide on ditching big-tech, with a focus on seven core areas.
- [Hybrid Analysis](https://www.hybrid-analysis.com/) a free malware analysis service for the community that detects and analyzes unknown threats using a unique Hybrid Analysis technology. Powered by [Falcon Sandbox](https://www.crowdstrike.com/endpoint-security-products/falcon-sandbox-malware-analysis/), which is developed by [CrowdStrike](https://www.crowdstrike.com/).
- [How to Create a Strong Password (and Remember It)](https://outline.com/dqfuqL)
- Use a [password manager](https://outline.com/NC69FD) such as [Bitwarden](https://bitwarden.com)
- Set up [multi-factor/two-factor authentication](https://en.wikipedia.org/wiki/Multi-factor_authentication) on as many accounts as you can
- Don't save passwords to your browser: [Erase the entire password cache](http://www.wikihow.com/Delete-Remembered-Passwords) once you set up a password manager.
- [Remove bloatware from Android (without root)](https://www.xda-developers.com/uninstall-carrier-oem-bloatware-without-root-access/)
- [What are 5-eyes, 9-eyes, and 14-eyes?](https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/)
- [Outline](https://outline.com/) is an awesome tool for getting all the junk out of news articles (I've used it a few times in this guide already). Sometimes it can get around paywalls for "premium" news sites.
- [Plexus](https://plexus.techlore.tech/) Plexus is a website where you can check andriod app compatibility with microg or no google services. It is a crowdsourced project where people test an app's compatibility in those environments and then sumbit it to the database.
- [PRISM Break](https://prism-break.org/en/) is a guide on how to opt out of global data surveillance programs like PRISM, XKeyscore and Tempora.
- [Privacy Guides](https://privacyguides.org/) provides services, tools and knowledge to protect your privacy against global mass surveillance.
- [retiolus/privacysec](https://github.com/retiolus/privacysec) is a collective guide built off the data of other guides, including this one, whose aim is to be translated into as many languages as possible.
- [r/Privacy wiki](https://old.reddit.com/r/privacy/wiki/index) has a lot of useful information. This guide also automatically mirrors itself to the wiki!
- [r/VPN wiki](https://old.reddit.com/r/VPN/wiki/index) to learn more about why you should consider using a VPN.
- [Switching.software](https://switching.software/) is a collection of ethical, easy-to-use and privacy-conscious alternatives to well-known software.
- [VirusTotal](https://www.virustotal.com/) lets you upload files and scans them against multiple antivirus programs at once. Very helpful for checking false negatives. Be aware that Alphabet Inc owns VirusTotal.
- [VPN Toolkit](https://techlore.tech/vpn.html) Community driven tools for VPNs. Includes a VPN finder, chart, and other useful imformation.
- [WindowsSpyBlocker (GitHub)](https://github.com/crazy-max/WindowsSpyBlocker) is a tool to block spying and tracking on Windows.
- [What is Tor and should I use it?](https://outline.com/JRCscH)
- [HTTP vs. HTTPS](https://outline.com/xUXZMh)
- The EFF has an [excellent guide](https://ssd.eff.org/) on how to stay safe and secure online. It is incredibly useful and I suggest that everyone read through it.
- Click [here](https://www.thewindowsclub.com/windows-10-telemetry) and [here](https://winaero.com/blog/how-to-disable-telemetry-and-data-collection-in-windows-10/) for tips on disabling Windows 10 telemetry/data collection.
- Click [here](https://duckduckgo.com/newsletter) to sign up for DuckDuckGo's privacy newsletter, and [here](https://spreadprivacy.com/) for more tips, articles, and blog posts from DuckDuckGo.
- [Delete Facebook](https://deletefacebook.com/). Another guide can be found [here](https://www.wikihow.com/Permanently-Delete-a-Facebook-Account).
- [Why you should put tape over your webcam](https://outline.com/fYCu98)
- [What is DNS and why should I change it?](https://outline.com/8jsWXw) Use [DNSPerf](https://www.dnsperf.com/#!dns-resolvers) to see which one is fastest for you. (Thanks @resynth1943)
- What is GDPR? [TechRadar](https://outline.com/6sjd76) and [The Guardian](https://outline.com/exmSpf)
- [Here](https://github.com/lfit/itpol/blob/master/linux-workstation-security.md) is a really good guide for configuring a super secure Linux workstation (thanks u/aoeudhtns)
- [A website to raise awareness of online privacy](https://theytrackyou.com/). Lot's of good tips in here (thanks u/brais33)
- [Android Privacy Guide](https://gitlab.com/Attedz/AndroidPrivacyGuide) (thanks u/rightknobhead)
- [Windows 10 Privacy Guide](https://fdossena.com/?p=w10debotnet/index_1903.frag) (thanks again u/rightknobhead)
- Check out [Prism Break](https://prism-break.org/en/) (thanks u/FrontierPsycho)
- [Guide for Linux users](https://github.com/wesaphzt/block-all-google) on blocking everything Google at the network level. This can and probably will break other alternatives that rely on Google to serve content. Thanks u/wesaphzt
- u/wesaphzt also provided [this](https://github.com/pyllyukko/user.js), [this](https://ffprofile.com/), and [this](https://www.privacytools.io/browsers/#about_config) for hardening Firefox.
- Check out [WindowsSpyBlocker](https://github.com/crazy-max/WindowsSpyBlocker) and [this tutorial](https://github.com/adolfintel/Windows10-Privacy) for even more Windows 10 tips (thanks u/rudolf323)
- [Virustotal](https://www.virustotal.com/) let's you upload files and it scans it against multiple antivirus software at once. Very helpful for checking false negatives. Website uses Google Analytics.
- Did you read the [wiki](https://old.reddit.com/r/privacy/wiki/index) yet? Go do that.

273
package-lock.json generated
View File

@ -1,288 +1,63 @@
{
"name": "degoogle",
"version": "1.0.0",
"lockfileVersion": 2,
"lockfileVersion": 1,
"requires": true,
"packages": {
"": {
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"fs-extra": "^9.0.0",
"moment": "^2.26.0",
"node-fetch": "^2.6.1",
"qs": "^6.9.4",
"yaml": "^1.10.0"
}
},
"node_modules/at-least-node": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dependencies": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dependencies": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"node_modules/get-intrinsic": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/graceful-fs": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
},
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dependencies": {
"function-bind": "^1.1.1"
},
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/has-symbols": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dependencies": {
"universalify": "^2.0.0"
},
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
"engines": {
"node": "*"
}
},
"node_modules/node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
"engines": {
"node": "4.x || >=6.0.0"
}
},
"node_modules/object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/qs": {
"version": "6.10.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/yaml": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
"engines": {
"node": ">= 6"
}
}
},
"dependencies": {
"at-least-node": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
},
"call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"requires": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
}
},
"fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
"integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
"requires": {
"at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"get-intrinsic": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"requires": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.1"
"universalify": "^1.0.0"
}
},
"graceful-fs": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
},
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
"function-bind": "^1.1.1"
}
},
"has-symbols": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
},
"jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
"integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
"requires": {
"graceful-fs": "^4.1.6",
"universalify": "^2.0.0"
"universalify": "^1.0.0"
}
},
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
"version": "2.26.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz",
"integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw=="
},
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
},
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg=="
},
"qs": {
"version": "6.10.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
"requires": {
"side-channel": "^1.0.4"
}
},
"side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
}
"version": "6.9.4",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
"integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
},
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug=="
},
"yaml": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
"integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg=="
}
}
}

View File

@ -1,15 +1,20 @@
{
"name": "degoogle",
"version": "1.0.0",
"description": "A huge list of alternatives to Google products. Privacy tips, tricks, and links.",
"description": "1. [Contributing](#contributing)\r 2. [Browser extensions](#browser-extensions)\r 3. **[Replacements/alternatives](#replacementsalternatives)**\r 1. [Disclaimer](#disclaimer)\r 2. [Web-based products](#web-based-products)\r 3. [Operating systems](#operating-systems)\r 4. [Desktop applications](#desktop-applications)\r 5. [Mobile applications](#mobile-applications-mobile-apps-installable-from-stores)\r 6. [Hardware](#hardware)\r 4. [Useful links, tools, and advice](#useful-links-tools-and-advice)\r 1. [Resources](#resources)\r 1. [Books](#books)\r 1. [Blog posts](#blog-posts)\r 1. [News articles](#news-articles)\r 5. [The lighter side](#the-lighter-side)\r 6. [Closing remarks](#closing-remarks)",
"main": "_build.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": "github:tycrek/degoogle",
"author": "tycrek <t@tycrek.com> (https://tycrek.com/)",
"repository": {
"type": "git",
"url": "git+https://github.com/tycrek/degoogle.git"
},
"author": "",
"license": "ISC",
"bugs": "https://github.com/tycrek/degoogle/issues",
"bugs": {
"url": "https://github.com/tycrek/degoogle/issues"
},
"homepage": "https://github.com/tycrek/degoogle#readme",
"dependencies": {
"fs-extra": "^9.0.0",
@ -18,4 +23,4 @@
"qs": "^6.9.4",
"yaml": "^1.10.0"
}
}
}

View File

@ -17,8 +17,4 @@
- title: Zucked
url: https://www.zuckedbook.com/
author: Roger McNamee
date: 2019
- title: Privacy Is Power
url: https://www.penguin.co.uk/books/1120394/privacy-is-power/9780552177719.html
author: Carissa Véliz
date: 2021
date: 2019

View File

@ -6,10 +6,14 @@
url: https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17
text: |
Privacy Badger automatically learns to block invisible trackers. Instead of keeping lists of what to block, Privacy Badger learns by watching which domains appear to be tracking you as you browse the Web.
- name: Decentraleyes
url: https://addons.mozilla.org/en-US/firefox/addon/decentraleyes
text: |
Protects you against tracking through "free", centralized, content delivery. It prevents a lot of requests from reaching networks like Google Hosted Libraries, and serves local files to keep sites from breaking. Complements regular content blockers.
- name: HTTPS Everywhere
url: https://addons.mozilla.org/en-US/firefox/addon/https-everywhere
text: |
Many sites on the web offer some limited support for encryption over HTTPS, but make it difficult to use. For instance, they may default to unencrypted HTTP, or fill encrypted pages with links that go back to the unencrypted site. The HTTPS Everywhere extension fixes these problems by rewriting all requests to these sites to HTTPS. Note: EFF is preparing to deprecate the HTTPS Everywhere, check out this [blog post](https://www.eff.org/deeplinks/2021/09/https-actually-everywhere).
Many sites on the web offer some limited support for encryption over HTTPS, but make it difficult to use. For instance, they may default to unencrypted HTTP, or fill encrypted pages with links that go back to the unencrypted site. The HTTPS Everywhere extension fixes these problems by rewriting all requests to these sites to HTTPS.
- name: Cookie AutoDelete
url: https://addons.mozilla.org/en-US/firefox/addon/cookie-autodelete
text: |
@ -26,6 +30,10 @@
url: https://addons.mozilla.org/en-US/firefox/addon/minerblock-origin
text: |
MinerBlock is an efficient browser extension that focuses on blocking browser-based cryptocurrency miners all over the web. This extension uses two different approaches to block miners. The first one is based on blocking requests/scripts loaded from a blacklist, this is the traditional approach adopted by most ad-blockers and other mining blockers. The other approach which makes MinerBlock more efficient against cryptojacking is detecting potential mining behavior inside loaded scripts and kills them immediately. This makes the extension able to block inline scripts as well as miners running through proxies. Source code available on [GitHub](https://github.com/xd4rker/MinerBlock).
- name: Terms of Service; Didn't Read
url: https://addons.mozilla.org/en-US/firefox/addon/terms-of-service-didnt-read
text: |
“I have read and agree to the Terms” is the biggest lie on the web. We aim to fix that. “Terms of Service; Didn't Read” is a user rights initiative to rate and label website terms & privacy policies, from very good (class A) to very bad (class E). This extension informs you instantly of your rights online by showing an unintrusive icon in the toolbar. You can click on this icon to get summaries from the [Terms of Service; Didn't Read](https://tosdr.org/) initiative.
- name: ClearURLS
url: https://addons.mozilla.org/en-US/firefox/addon/clearurls
text: |
@ -42,6 +50,10 @@
url: https://addons.mozilla.org/en-US/firefox/addon/disconnect
text: |
Visualize and block the otherwise invisible websites that track your search and browsing history.
- name: Don't touch my tabs! (rel=noopener
url: https://addons.mozilla.org/en-US/firefox/addon/dont-touch-my-tabs
text: |
Prevent tabs opened by a hyperlink from hijacking the previous tab by adding the rel=noopener attribute to all hyperlinks (excluding same-domain hyperlinks).
- name: Firefox Multi-Account Containers
url: https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers
text: |
@ -58,6 +70,10 @@
url: https://addons.mozilla.org/en-US/firefox/addon/link-cleaner
text: |
Clean URLs that are about to be visited: removes utm_* parameters; on item pages of aliexpress and amazon, removes tracking parameters; skip redirect pages of facebook, steam and reddit
- name: Neat URL
url: https://addons.mozilla.org/en-US/firefox/addon/neat-url
text: |
Remove garbage from URLs.
- name: Privacy-Oriented Origin Policy
url: https://addons.mozilla.org/en-US/firefox/addon/privacy-oriented-origin-policy
text: |
@ -70,6 +86,10 @@
url: https://addons.mozilla.org/en-US/firefox/addon/temporary-containers
text: |
Open tabs, websites, and links in automatically managed disposable containers. Containers isolate data websites store (cookies, storage, and more) from each other, enhancing your privacy and security while you browse.
- name: uMatrix
url: https://addons.mozilla.org/en-US/firefox/addon/umatrix
text: |
Point & click to forbid/allow any class of requests made by your browser. Use it to block scripts, iframes, ads, facebook, etc.
- name: TrackMeNot
url: https://addons.mozilla.org/en-US/firefox/addon/trackmenot
text: |
@ -78,11 +98,7 @@
url: https://addons.mozilla.org/en-US/firefox/addon/amp2html
text: |
This web extension enables users to choose to opt-out of using Accelerated Mobile Pages (AMP) and choose to use the standard web instead.
- name: user.js
url: https://github.com/arkenfox/user.js
- name: ghacks-user.js
url: https://github.com/ghacksuserjs/ghacks-user.js/
text: |
This is not an extension, instead it is a Firefox `user.js` config file. This file is a template which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
- name: Port Authority
url: https://addons.mozilla.org/en-US/firefox/addon/port-authority/
text: |
Blocks websites from using javascript to port scan your computer/network and dynamically blocks all LexisNexis endpoints from running their invasive data collection scripts. [Website](https://www.g666gle.me/Port-Authority/), [Source Code](https://github.com/ACK-J/Port_Authority)
This is not an extension, instead it is a Firefox `user.js` config file. This file is a template which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).

File diff suppressed because it is too large Load Diff