1
1
mirror of https://github.com/privacyguides/privacyguides.org.git synced 2026-01-07 03:16:54 +00:00

Compare commits

..

18 Commits

Author SHA1 Message Date
e81b8acc97 Update browser-fingerprinting.md 2024-05-24 02:55:00 -05:00
10a40abf14 arkenfox mention 2024-05-24 02:31:53 -05:00
ce3ea6e7c9 tldr 2024-05-24 02:28:57 -05:00
ad4c5b4b53 revise 2024-05-24 02:22:20 -05:00
a9ab3b3226 Browser fingerprinting overview 2024-05-24 01:51:02 -05:00
4221863aff Fix broken image and update dependencies 2024-05-22 00:14:17 -05:00
26f3300424 Show forum topics on homepage (#2562)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-19 12:30:53 +09:30
redoomed1
2356a3a49b update: IVPN voucher cards, grammar fixes (#2568)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-19 12:27:58 +09:30
redoomed1
4f26072136 fix: update GitHub link for PM Android (#2569)
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-19 12:23:40 +09:30
Ákos Nikházy
3d8eda7bff fix: Mullvad accepts prepaid cards (#2563)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-13 21:37:53 +09:30
Overwatch
e0b1995d20 fix: Add Flatpak link for Notesnook (#2567)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-13 21:29:51 +09:30
redoomed1
560a46ff03 fix: remove LocalMonero - defunct: (#2565)
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-13 21:26:48 +09:30
Ted Gravlin
f1a0679bd3 fix: Update Notesnook logo and information (#2557)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-03 06:25:14 +09:30
Paul Verbeke
c64d446d52 fix: remove leftover brackets (#2558)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-05-03 06:19:46 +09:30
redoomed1
25a6a5a937 fix: Feeder, add GitHub, minor grammar fix (#2555)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-04-21 20:44:13 +09:30
redoomed1
8e51dcb5aa Tidy up of productivity page (#2548)
fix: Move paste services criteria
feat: language services criteria

Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
2024-04-20 04:40:23 +09:30
1ce9941018 Revise notes on Mull/GeckoView Android (#2542)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-04-19 21:22:57 +09:30
allcontributors[bot]
5b0f3a6832 Add some other contributors (#2554)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-04-19 01:13:50 -05:00
24 changed files with 559 additions and 260 deletions

View File

@@ -371,7 +371,7 @@
{
"login": "5amm",
"name": "Sam Howell",
"avatar_url": "https://www.samhowell.uk/images/avatar-main.png",
"avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4",
"profile": "https://www.samhowell.uk/",
"contributions": [
"blog"
@@ -2706,7 +2706,9 @@
"avatar_url": "https://avatars.githubusercontent.com/u/49742151?v=4",
"profile": "https://lamtrinh.dev/",
"contributions": [
"doc"
"doc",
"bug",
"question"
]
},
{
@@ -2734,6 +2736,15 @@
"contributions": [
"doc"
]
},
{
"login": "dzenan",
"name": "Dženan",
"avatar_url": "https://avatars.githubusercontent.com/u/69632324?v=4",
"profile": "https://github.com/Dzenan",
"contributions": [
"translation"
]
}
],
"contributorsPerLine": 5,

268
Pipfile.lock generated
View File

@@ -18,19 +18,19 @@
"default": {
"babel": {
"hashes": [
"sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363",
"sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"
"sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb",
"sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"
],
"markers": "python_version >= '3.7'",
"version": "==2.14.0"
"markers": "python_version >= '3.8'",
"version": "==2.15.0"
},
"cairocffi": {
"hashes": [
"sha256:78e6bbe47357640c453d0be929fa49cd05cce2e1286f3d2a1ca9cbda7efdb8b7",
"sha256:aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e"
"sha256:1f29a8d41dbda4090c0aa33bcdea64f3b493e95f74a43ea107c4a8a7b7f632ef",
"sha256:7761863603894305f3160eca68452f373433ca8745ab7dd445bd2c6ce50dcab7"
],
"markers": "python_version >= '3.7'",
"version": "==1.6.1"
"markers": "python_version >= '3.8'",
"version": "==1.7.0"
},
"cairosvg": {
"hashes": [
@@ -258,11 +258,11 @@
},
"idna": {
"hashes": [
"sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca",
"sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"
"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc",
"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"
],
"markers": "python_version >= '3.5'",
"version": "==3.6"
"version": "==3.7"
},
"jieba": {
"hashes": [
@@ -273,11 +273,11 @@
},
"jinja2": {
"hashes": [
"sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa",
"sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"
"sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369",
"sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"
],
"markers": "python_version >= '3.7'",
"version": "==3.1.3"
"version": "==3.1.4"
},
"markdown": {
"hashes": [
@@ -363,29 +363,37 @@
},
"mkdocs": {
"hashes": [
"sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1",
"sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"
"sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7",
"sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"
],
"markers": "python_version >= '3.7'",
"version": "==1.5.3"
"markers": "python_version >= '3.8'",
"version": "==1.6.0"
},
"mkdocs-get-deps": {
"hashes": [
"sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c",
"sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"
],
"markers": "python_version >= '3.8'",
"version": "==0.2.0"
},
"mkdocs-git-authors-plugin": {
"hashes": [
"sha256:0614f4f87d31eabd0a0d607c9e0532608fc593997ebee282ec564ee6dc1c041e",
"sha256:10dfc57fb10d5c3aceb0e5cdea199ac3a7588979f26484eba46d935dc1044c26"
"sha256:380730a05eeb947a7e84be05fdb1c5ae2a7bc70fd9f6eda941f187c87ae37052",
"sha256:6161f63b87064481a48d9ad01c23e43c3e758930c3a9cc167fe482909ceb9eac"
],
"index": "pypi",
"markers": "python_version >= '3.7'",
"version": "==0.8.0"
"version": "==0.9.0"
},
"mkdocs-git-revision-date-localized-plugin": {
"hashes": [
"sha256:08fd0c6f33c8da9e00daf40f7865943113b3879a1c621b2bbf0fa794ffe997d3",
"sha256:1f94eb510862ef94e982a2910404fa17a1657ecf29f45a07b0f438c00767fc85"
"sha256:0c439816d9d0dba48e027d9d074b2b9f1d7cd179f74ba46b51e4da7bb3dc4b9b",
"sha256:d796a18b07cfcdb154c133e3ec099d2bb5f38389e4fd54d3eb516a8a736815b8"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==1.2.4"
"version": "==1.2.5"
},
"mkdocs-macros-plugin": {
"hashes": [
@@ -509,11 +517,11 @@
},
"platformdirs": {
"hashes": [
"sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068",
"sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"
"sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee",
"sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"
],
"markers": "python_version >= '3.8'",
"version": "==4.2.0"
"version": "==4.2.2"
},
"pycparser": {
"hashes": [
@@ -525,19 +533,19 @@
},
"pygments": {
"hashes": [
"sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c",
"sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"
"sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199",
"sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"
],
"markers": "python_version >= '3.7'",
"version": "==2.17.2"
"markers": "python_version >= '3.8'",
"version": "==2.18.0"
},
"pymdown-extensions": {
"hashes": [
"sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584",
"sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"
"sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940",
"sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"
],
"markers": "python_version >= '3.8'",
"version": "==10.7.1"
"version": "==10.8.1"
},
"python-dateutil": {
"hashes": [
@@ -622,110 +630,96 @@
},
"regex": {
"hashes": [
"sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5",
"sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770",
"sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc",
"sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105",
"sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d",
"sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b",
"sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9",
"sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630",
"sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6",
"sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c",
"sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482",
"sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6",
"sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a",
"sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80",
"sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5",
"sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1",
"sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f",
"sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf",
"sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb",
"sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2",
"sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347",
"sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20",
"sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060",
"sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5",
"sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73",
"sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f",
"sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d",
"sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3",
"sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae",
"sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4",
"sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2",
"sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457",
"sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c",
"sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4",
"sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87",
"sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0",
"sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704",
"sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f",
"sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f",
"sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b",
"sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5",
"sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923",
"sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715",
"sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c",
"sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca",
"sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1",
"sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756",
"sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360",
"sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc",
"sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445",
"sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e",
"sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4",
"sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a",
"sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8",
"sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53",
"sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697",
"sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf",
"sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a",
"sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415",
"sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f",
"sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9",
"sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400",
"sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d",
"sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392",
"sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb",
"sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd",
"sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861",
"sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232",
"sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95",
"sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7",
"sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39",
"sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887",
"sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5",
"sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39",
"sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb",
"sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586",
"sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97",
"sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423",
"sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69",
"sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7",
"sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1",
"sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7",
"sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5",
"sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8",
"sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91",
"sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590",
"sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe",
"sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c",
"sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64",
"sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd",
"sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa",
"sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31",
"sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"
"sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649",
"sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35",
"sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb",
"sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68",
"sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5",
"sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133",
"sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0",
"sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d",
"sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da",
"sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f",
"sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d",
"sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53",
"sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa",
"sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a",
"sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890",
"sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67",
"sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c",
"sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2",
"sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced",
"sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741",
"sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f",
"sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa",
"sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf",
"sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4",
"sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5",
"sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2",
"sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384",
"sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7",
"sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014",
"sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704",
"sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5",
"sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2",
"sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49",
"sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1",
"sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694",
"sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629",
"sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6",
"sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435",
"sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c",
"sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835",
"sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e",
"sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201",
"sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62",
"sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5",
"sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16",
"sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f",
"sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1",
"sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f",
"sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f",
"sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145",
"sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3",
"sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed",
"sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143",
"sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca",
"sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9",
"sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa",
"sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850",
"sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80",
"sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe",
"sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656",
"sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388",
"sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1",
"sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294",
"sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3",
"sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d",
"sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b",
"sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40",
"sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600",
"sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c",
"sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569",
"sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456",
"sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9",
"sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb",
"sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e",
"sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f",
"sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d",
"sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a",
"sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a",
"sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"
],
"markers": "python_version >= '3.7'",
"version": "==2023.12.25"
"markers": "python_version >= '3.8'",
"version": "==2024.5.15"
},
"requests": {
"hashes": [
"sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f",
"sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"
"sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289",
"sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"
],
"markers": "python_version >= '3.7'",
"version": "==2.31.0"
"markers": "python_version >= '3.8'",
"version": "==2.32.2"
},
"six": {
"hashes": [
@@ -753,11 +747,11 @@
},
"tinycss2": {
"hashes": [
"sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847",
"sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"
"sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d",
"sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"
],
"markers": "python_version >= '3.7'",
"version": "==1.2.1"
"markers": "python_version >= '3.8'",
"version": "==1.3.0"
},
"urllib3": {
"hashes": [

View File

@@ -211,7 +211,7 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="#blog-tnonate" title="Blogposts">📝</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://www.samhowell.uk/images/avatar-main.png" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asddsaz"><img src="https://avatars.githubusercontent.com/u/42685606?v=4" width="100px;" loading=lazy /><br /><sub><b>asddsaz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asddsaz" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hugoncosta"><img src="https://avatars.githubusercontent.com/u/29380568?v=4" width="100px;" loading=lazy /><br /><sub><b>Hugo Costa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hugoncosta" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
@@ -571,12 +571,13 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FishCoding"><img src="https://avatars.githubusercontent.com/u/16527725?v=4" width="100px;" loading=lazy /><br /><sub><b>Mario</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FishCoding" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skye.sh/"><img src="https://avatars.githubusercontent.com/u/48442092?v=4" width="100px;" loading=lazy /><br /><sub><b>skye</b></sub></a><br /><a href="#question-dioxias" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r2fo"><img src="https://avatars.githubusercontent.com/u/50496756?v=4" width="100px;" loading=lazy /><br /><sub><b>r2fo</b></sub></a><br /><a href="#translation-r2fo" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Alamtrinhdev" title="Bug reports">🐛</a> <a href="#question-lamtrinhdev" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://discuss.privacyguides.net/u/frostlike"><img src="https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/frostlike/288/3600_2.png" width="100px;" loading=lazy /><br /><sub><b>frostlike</b></sub></a><br /><a href="#question" title="Answering Questions">💬</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scholz.ruhr/"><img src="https://avatars.githubusercontent.com/u/21988035?v=4" width="100px;" loading=lazy /><br /><sub><b>Merlin Scholz</b></sub></a><br /><a href="#translation-merlinscholz" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jordanwarne.net/"><img src="https://avatars.githubusercontent.com/u/154663344?v=4" width="100px;" loading=lazy /><br /><sub><b>jordan warne</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jordan-warne" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dzenan"><img src="https://avatars.githubusercontent.com/u/69632324?v=4" width="100px;" loading=lazy /><br /><sub><b>Dženan</b></sub></a><br /><a href="#translation-dzenan" title="Translation">🌍</a></td>
</tr>
</tbody>
<tfoot>

View File

@@ -2,32 +2,24 @@
title: Supporting Us
---
<!-- markdownlint-disable MD036 -->
Donate to Privacy Guides and support our mission to defend digital rights and spread the word about mass surveillance programs and other daily privacy invasions. You can help Privacy Guides researchers, activists, and maintainers create informative content, host private digital services, and protect privacy rights at a time when the world needs it most.
It takes a lot of [people](contributors.md) and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spreading the word about privacy and mass surveillance. If you like what we do, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org) or [contributing translations](https://crowdin.com/project/privacyguides).
[Donate on Open Collective](https://opencollective.com/privacyguides/donate){ class="md-button md-button--primary" }
[Sponsor us on GitHub](https://github.com/sponsors/privacyguides){ .md-button }
<div class="admonition failure" markdown>
<p class="admonition-title">Donation Information</p>
Privacy Guides has been a nonstop effort for over 5 years to stay up to date with the world of cybersecurity and privacy, and to promote the benefits of privacy overall. This is a **non-profit, community-driven** project that would not be possible without the generous support of all our [contributors.](contributors.md)
Unfortunately, Open Collective Foundation (our long-time fiscal host) announced they are dissolving their operations and can no longer support us or any project they host. Thus, we have no way to accept donations at this time. We are looking into ways to move forward from a legal perspective, but in the meantime any non-monetary contribution you can provide would be greatly appreciated.
[Your donation may qualify for a charitable deduction.](#legal-information)
</div>
## Cryptocurrency
Another option to support us is by buying our merchandise from HelloTux. We get a small commission for each item sold, and you get a quality product to show for it.
We also accept cryptocurrency donations:
- [XMR](../cryptocurrency.md#monero): `zzz`
- BTC: `zzz`
- ETH: `zzz`
If you would like to make a donation via another method, please reach out to [jonah@privacyguides.org](mailto:jonah@privacyguides.org).
[Buy on HelloTux.com](https://hellotux.com/privacyguides){ class="md-button" }
Thank you to all those who support our mission! :heart:
## How We Use Donations
Privacy Guides is a **non-profit** project which is legally restricted by section 501(c)(3) of Title 26 of the United States Code in terms of how we use our funds. We are only able to use our funds to further this project and our related charitable endeavors.
We use donations for a variety of purposes, including:
Privacy Guides is a **non-profit** organization. We use donations for a variety of purposes, including:
**Domain Registrations**
@@ -45,24 +37,4 @@ We use donations for a variety of purposes, including:
: We occasionally purchase products and services for the purposes of testing our [recommended tools](../tools.md).
We strictly **cannot** use donations to support political campaigns/candidates or attempt to influence legislation. Earnings also will **not** inure to the benefit of any private shareholder or individual.
## Legal Information
Privacy Guides maintains its non-profit status via our fiscal host, [MAGIC Grants](https://magicgrants.org/), a 501(c)(3) organization based in Colorado (tax ID #82-5183590).
Because of this status, when you donate you may be eligible for a charitable deduction. Consult with your tax advisor or the IRS to determine whether a contribution is deductible.
Your donation to Privacy Guides is held by MAGIC Grants in a restricted fund, subject to our [agreement](https://github.com/MAGICGrants/website/pull/18) with them. Your restricted donation can only be used for Privacy Guides, and fund disbursals can only be approved by the Privacy Guides team. It can not be used by MAGIC Grants for any other purpose.
MAGIC Grants is responsible for collecting donations, issuing receipts, handling approved fund disbursements, and all other accounting-related tasks. We extend our gratitude to their team for allowing us to accept donations flexibly (including cryptocurrency!), and for performing this work which allows us to focus entirely on our charitable mission.
## Merchandise
Another option to support us is by buying our merchandise from HelloTux. We get a small commission for each item sold, and you get a quality product to show for it.
[Buy on HelloTux.com](https://hellotux.com/privacyguides){ class="md-button" }
## Non-Financial Support
It takes a lot of [people](contributors.md) and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spreading the word about privacy and mass surveillance. If you're looking for other ways to help out, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org), [joining our forum](https://discuss.privacyguides.net), or [contributing translations](https://crowdin.com/project/privacyguides).
We are still working with our fiscal host (the Open Collective Foundation) to receive cryptocurrency donations, at the moment the accounting is unfeasible for many smaller transactions, but this should change in the future. In the meantime, if you wish to make a sizable (> $100) cryptocurrency donation, please reach out to [jonah@privacyguides.org](mailto:jonah@privacyguides.org).

View File

@@ -0,0 +1,81 @@
---
title: "Browser Fingerprinting"
icon: material/fingerprint
description: Browser fingerprinting is a method of tracking users across sites regardless of their network.
---
**Fingerprinting** refers to a service collecting metadata about whatever connects to it, for the purposes of identifying a user. In this overview we are largely going to cover **browser fingerprinting**, specifically how websites try to uniquely identify your web browser outside the standard identifiers most people think of, like your IP address or user agent.
<div class="admonition abstract" markdown>
<p class="admonition-title">TL;DR</p>
The **only** reliable way to thwart all fingerprinting scripts and be anonymous is to use [Tor Browser](../tor.md). Other browsers can only confidently fool certain tracking scripts, and will never be completely unidentifiable despite any claims otherwise. However, the anti-fingerprinting approaches used by other browsers and described here are still useful in protecting your privacy.
</div>
Many people think their browser fingerprint is a single thing, like your actual fingerprints, a string of characters like `XP2urbkhQIaHyMQYXYv4` that uniquely identifies their browser, and if they can get theirs to match everyone else's they are safe. However, browser fingerprinting actually refers to the broad collection of all the different metrics which websites can use to track you.
While many websites or fingerprinting scripts do take all those metrics and hash them into a single identifying string with a fingerprinting algorithm, the algorithms and the metrics they use to create that fingerprint varies between different trackers. In other words, just because one fingerprinting test says your browser's fingerprint is non-unique, or randomized, or any certain thing; doesn't necessarily mean that it will be for every other fingerprinting test or tracker out there, because every method of fingerprinting your browser is different.
Many non-experts will claim that using Firefox or enabling its fingerprinting resistance preferences will make you *more* unique, give you *less* privacy, and make you "stand out in the crowd." However, if you instead do nothing at all then your browser will *already* be uniquely identifiable. Thus, the "crowd" of Google Chrome or Safari users these people will claim exists in fact does not, because you can't blend in to a crowd filled with completely unique browsers. A [study](https://www.ndss-symposium.org/ndss2017/ndss-2017-programme/cross-browser-fingerprinting-os-and-hardware-level-features/) published in 2017 demonstrated an approach that could uniquely identify 99.24% of users, without even taking into account their IP address.
==When you are already completely unique, becoming "more unique" is impossible.== In reality, these fingerprint resistance features are generally not meant to make your browser unidentifiable at all, they merely block tracker scripts from collecting certain metrics, which in turn *can* make your browser unidentifiable to certain—but not all—tracking scripts which rely on those metrics.
## Common metrics
Your browser sends lots of data to the websites you visit, and even more data can be detected by clever tracking scripts. Some data points which—when combined—can be used to identify you include:
- Your time zone
- The fonts you have installed
- The size of your browser window (or screen size)
- Your language
- Your timezone
- Extensions you have installed[^1]
- How fast your computer is[^2]
- And much more...
Some of these metrics are stronger or weaker than others, your browser window size is a weak tracking metric because it is easily changed, while your fonts or timezone are a stronger identifier because they are relatively static, for example. Combined with—or even without—the tracking factors people typically think of, such as your IP address, tracking cookies, and user agent; metrics like these can easily pinpoint particular browsers across the web.
Another common fingerprinting technique is "canvas fingerprinting," which uses WebGL to determine information about your graphics drivers and GPU (or CPU).[^3] In 2022 this was expanded upon in a [research paper](https://www.ndss-symposium.org/wp-content/uploads/2022-93-paper.pdf) which described methods of using canvas fingerprinting in a way which could effectively identify users with "similar hardware and software configurations, even when they are considered identical by current state-of-the-art fingerprinting algorithms." Tor [considers](https://2019.www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability) canvas fingerprinting to be "the single largest fingerprinting threat browsers face today."
[^1]: In some cases the extensions you have installed can be [directly detected](https://z0ccc.github.io/extension-fingerprints/) by websites. In other cases, the behavior of your installed extensions can be observed to fingerprint you. A website can detect whether your ad blocker blocks certain domains for example, which can give it an idea of the ad blocking lists you have installed.
[^2]: Browser benchmark tests can be used to determine CPU features, such as whether it supports hardware AES encryption or Intel Turbo Boost by finding the time it takes for your computer to perform a simple calculation or cryptographic algorithm. Browser hardware APIs such as Chromium's [Battery API](https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API) can also be used to detect short-term information about your system like its current battery life.
[^3]: A 2012 paper "[Pixel Perfect: Fingerprinting Canvas in HTML5](https://hovav.net/ucsd/dist/canvas.pdf)" demonstrated that canvas fingerprinting produces 5.73 bits of entropy, based on the browser, operating system, and GPU hardware configuration of the computer.
## Types of tracking scripts
In general, we can classify fingerprinting software into two categories: **naive** and **advanced**.
**Naive** trackers can be fooled by standard anti-fingerprinting techniques like Firefox's "resist fingerprinting" or Brave's fingerprint randomization features, because they only look for a few predetermined metrics and will blindly accept whatever values your browser provides.
On the other hand, **advanced** fingerprinting scripts can detect randomized values created by your browser (this is always possible) with varying levels of sophistication, going to greater lengths to fingerprint you than most anti-fingerprinting methods can protect against. The only way to defeat advanced scripts is by blending in with a crowd of other identical looking browsers, which is no easy feat.
==The good news is that most fingerprinting scripts you will encounter on the internet are naive==. They don't bother trying to detect and bypass anti-fingerprinting methods, because they are relatively uncommon, so **any** anti-fingerprinting measures you can implement will work effectively towards thwarting those trackers. This is not to say that fingerprinting cannot or will not become more sophisticated and widespread in the future, but for now most standard anti-fingerprinting approaches are enough.
## Anti-fingerprinting approaches
Broadly speaking, there are three ways that browsers usually try to deal with fingerprinting. In increasing levels of protection:
1. Blocking known fingerprinting scripts.
2. Randomizing your fingerprint.
3. Presenting a uniform fingerprint.
There are advantages and disadvantages to each of these approaches, and generally they cover distinct threat models, but all approaches ultimately try to make it more difficult for websites to track you across the internet.
[Firefox](../desktop-browsers.md#firefox) out of the box takes the first approach, which is to simply block third-party requests to "companies that are known to participate in fingerprinting." This is the *safest* approach, because it results in almost no website breakage, but it also provides the least protection, because it relies on identifying trackers in advance. It also does little to block first-party tracking. You can generally achieve similar results in any browser with an extension that blocks known trackers, like [uBlock Origin](../browser-extensions.md#ublock-origin).
Firefox is *capable* of much stronger fingerprinting protections, although those settings are typically not easily accessible and are not enabled by default. You can use a tool like [Arkenfox](../desktop-browsers.md#arkenfox-advanced) to increase your protections closer to what is provided by Tor Browser (explained below), but it requires more technical effort on your end.
[Brave](../desktop-browsers.md#brave) largely takes the **randomization** approach, by changing fingerprintable metrics in ways which are imperceptible to the person using the browser, but confusing for machines on the other end. This approach gives your browser a completely unique fingerprint, **but** that fingerprint *changes* for each website you visit, so those metrics can't be used to track you across different sites. The benefit of this approach is that website breakage is minimized, because the browser can keep a lot of features enabled and simply randomize their outputs a bit.
However, randomizing your fingerprint does not provide complete protection. Artificial randomization can be detected by websites, and the original entropy from the raw source data still exists. In some cases the randomization implementation has been reversible in practice. Brave's Web Audio API's randomization was at one point [reversible](https://fingerprint.com/blog/audio-fingerprinting/#reverting-brave-standard-farbling) for example. There may also be other indirect ways of learning about the original non-randomized data. Bypassing or de-randomizing these randomized outputs are all techniques which could be utilized by *advanced* tracking scripts.
[Tor Browser](../tor.md#tor-browser) and [Mullvad Browser](../desktop-browsers.md#mullvad-browser) take the more extreme approach of **blocking** access to fingerprintable metrics in the first place, and making other fingerprintable metrics non-unique, so that your browser is as similar as possible to other browsers. Because this is generally achieved by locking down the browser to as minimal a feature-set as possible—in order to make a large plethora of users look identical—it does generally come at the cost of frequent website breakage. However, it is the only way to thwart *advanced* tracking scripts.
Many other browsers do use similar techniques to protect your privacy, but to a far lesser extent. Safari, for example, only makes a select list of system fonts available for websites to access regardless of the fonts you actually have installed.
## Further Reading
Browser fingerprinting is a very complex topic. These resources may be useful in obtaining more technical background information:
- The [Arkenfox](../desktop-browsers.md#arkenfox-advanced) user.js [documentation](https://github.com/arkenfox/user.js/wiki) is a very comprehensive resource about fingerprinting and Firefox's anti-fingerprinting protections, which was used extensively while writing this article.

View File

@@ -16,7 +16,7 @@ Despite this, its typically the best option.
Its relatively simple to purchase gift cards and prepaid cards at most grocery stores and convenience stores with cash. Gift cards usually dont have a fee, though prepaid cards often do, so pay close attention to these fees and expiry dates. Some stores may ask to see your ID at checkout to reduce fraud.
Gift cards usually have limits of up to $200 per card, but some offer limits of up to $2,000 per card. Prepaid cards (eg: from Visa or Mastercard) usually have limits of up to $1,000 per card.
Gift cards usually have limits of up to $200 per card, but some offer limits of up to $2,000 per card. Prepaid cards (e.g.: from Visa or Mastercard) usually have limits of up to $1,000 per card.
Gift cards have the downside of being subject to merchant policies, which can have terrible terms and restrictions. For example, some merchants dont accept payment in gift cards exclusively, or they may cancel the value of the card if they consider you to be a high-risk user. Once you have merchant credit, the merchant has a strong degree of control over this credit.
@@ -57,7 +57,7 @@ Additionally, many if not most cryptocurrencies are scams. Make transactions car
There are a number of cryptocurrency projects which purport to provide privacy by making transactions anonymous. We recommend using one which provides transaction anonymity **by default** to avoid operational errors.
- [Recommended Cryptocurrency :material-arrow-right-drop-circle:](../cryptocurrency.md#coins)
- [Recommended Cryptocurrency :material-arrow-right-drop-circle:](../cryptocurrency.md#monero)
Privacy coins have been subject to increasing scrutiny by government agencies. In 2020, [the IRS published a $625,000 bounty](https://forbes.com/sites/kellyphillipserb/2020/09/14/irs-will-pay-up-to-625000-if-you-can-crack-monero-other-privacy-coins/?sh=2e9808a085cc) for tools which can break Bitcoin Lightning Network and/or Monero's transaction privacy. They ultimately [paid two companies](https://sam.gov/opp/5ab94eae1a8d422e88945b64181c6018/view) (Chainalysis and Integra Fec) a combined $1.25 million for tools which purport to do so (it is unknown which cryptocurrency network these tools target). Due to the secrecy surrounding tools like these, ==none of these methods of tracing cryptocurrencies have been independently confirmed.== However, it is quite likely that tools which assist targeted investigations into private coin transactions exist, and that privacy coins only succeed in thwarting mass surveillance.
@@ -75,7 +75,7 @@ With cryptocurrency there are two forms of wallets: custodial wallets and noncus
### Acquisition
Acquiring [cryptocurrencies](../cryptocurrency.md) like Monero privately can be difficult. P2P marketplaces like [LocalMonero](https://localmonero.co), a platform which facilitates trades between people, are one option that can be used. If using an exchange which requires KYC is an acceptable risk for you as long as subsequent transactions can't be traced, a much easier option is to purchase Monero on an exchange like [Kraken](https://kraken.com), or purchase Bitcoin/Litecoin from a KYC exchange which can then be swapped for Monero. Then, you can withdraw the purchased Monero to your own noncustodial wallet to use privately from that point forward.
Acquiring [cryptocurrencies](../cryptocurrency.md) like Monero privately can be difficult. P2P marketplaces, platforms which facilitate trades between people, are one option that can be used. If using an exchange which requires KYC is an acceptable risk for you as long as subsequent transactions can't be traced, a much easier option is to purchase Monero on an exchange like [Kraken](https://kraken.com), or purchase Bitcoin/Litecoin from a KYC exchange which can then be swapped for Monero. Then, you can withdraw the purchased Monero to your own noncustodial wallet to use privately from that point forward.
If you go this route, make sure to purchase Monero at different times and in different amounts than where you will spend it. If you purchase $5000 of Monero at an exchange and make a $5000 purchase in Monero an hour later, those actions could potentially be correlated by an outside observer regardless of which path the Monero took. Staggering purchases and purchasing larger amounts of Monero in advance to later spend on multiple smaller transactions can avoid this pitfall.

View File

@@ -126,7 +126,7 @@ Governments often justify mass surveillance programs as necessary means to comba
<div class="admonition quote" markdown>
<p class="admonition-title">ACLU: <em><a href="https://aclu.org/news/national-security/the-privacy-lesson-of-9-11-mass-surveillance-is-not-the-way-forward">The Privacy Lesson of 9/11: Mass Surveillance is Not the Way Forward</a></em></p>
In the face of [Edward Snowden's disclosures of government programs such as [PRISM](https://en.wikipedia.org/wiki/PRISM) and [Upstream](https://en.wikipedia.org/wiki/Upstream_collection)], intelligence officials also admitted that the NSA had for years been secretly collecting records about virtually every Americans phone calls — whos calling whom, when those calls are made, and how long they last. This kind of information, when amassed by the NSA day after day, can reveal incredibly sensitive details about peoples lives and associations, such as whether they have called a pastor, an abortion provider, an addiction counselor, or a suicide hotline.
In the face of Edward Snowden's disclosures of government programs such as [PRISM](https://en.wikipedia.org/wiki/PRISM) and [Upstream](https://en.wikipedia.org/wiki/Upstream_collection), intelligence officials also admitted that the NSA had for years been secretly collecting records about virtually every Americans phone calls — whos calling whom, when those calls are made, and how long they last. This kind of information, when amassed by the NSA day after day, can reveal incredibly sensitive details about peoples lives and associations, such as whether they have called a pastor, an abortion provider, an addiction counselor, or a suicide hotline.
</div>

View File

@@ -65,7 +65,7 @@ OpenPGP also does not support Forward secrecy, which means if either your or the
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=ch.protonmail.android)
- [:simple-appstore: App Store](https://apps.apple.com/app/id979659905)
- [:simple-github: GitHub](https://github.com/ProtonMail/proton-mail-android/releases)
- [:simple-github: GitHub](https://github.com/ProtonMail/android-mail/releases)
- [:simple-windows11: Windows](https://proton.me/mail/bridge#download)
- [:simple-apple: macOS](https://proton.me/mail/bridge#download)
- [:simple-linux: Linux](https://proton.me/mail/bridge#download)

View File

@@ -130,13 +130,6 @@ Brave allows you to select additional content filters within the internal `brave
### Mull
<div class="admonition danger" markdown>
<p class="admonition-title">Danger</p>
Firefox (Gecko)-based browsers on Android [lack per-site process isolation](https://bugzilla.mozilla.org/show_bug.cgi?id=1565196), a powerful security feature that offers additional protection against a malicious website exploiting a security vulnerability. Missing this feature likely won't pose an issue for low-risk web browsers who keep their browser up-to-date, but those visiting higher-risk sites or at risk of targeted/0-day attacks should strongly consider a Chromium-based browser like [Brave](#brave) instead.
</div>
<div class="admonition recommendation" markdown>
![Mull logo](assets/img/browsers/mull.svg){ align=right }
@@ -157,6 +150,16 @@ Firefox (Gecko)-based browsers on Android [lack per-site process isolation](http
</div>
<div class="admonition danger" markdown>
<p class="admonition-title">Danger</p>
Firefox (Gecko)-based browsers on Android [lack](https://bugzilla.mozilla.org/show_bug.cgi?id=1610822) [site isolation](https://wiki.mozilla.org/Project_Fission),[^1] a powerful security feature that protects against a malicious site performing a [Spectre](https://en.wikipedia.org/wiki/Spectre_(security_vulnerability))-like attack to gain access to the memory of another website you have open.[^2] Chromium-based browsers like [Brave](#brave) will provide more robust protection against malicious websites.
</div>
[^1]: This should not be mistaken for [state partitioning](https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning) (or dynamic [first party isolation](https://2019.www.torproject.org/projects/torbrowser/design/#identifier-linkability)), where website data such as cookies and cache is restricted so that a third-party embedded in one top-level site cannot access data stored under another top-level site. This is an important privacy feature to prevent cross-site tracking and **is** supported by Firefox on Android.
[^2]: GeckoView also [does not](https://bugzilla.mozilla.org/show_bug.cgi?id=1565196) take advantage of Android's native process sandboxing by using the [isolatedProcess](https://developer.android.com/guide/topics/manifest/service-element#isolated) flag, which normally allows an app to safely run less trusted code in a separate process that has no permissions of its own.
Enable DivestOS's [F-Droid Repo](https://divestos.org/fdroid/official) to receive updates directly from the developer. Downloading Mull from the default F-Droid repo will mean your updates could be delayed by a few days or longer.
Mull enables many features upstreamed by the [Tor uplift project](https://wiki.mozilla.org/Security/Tor_Uplift) using preferences from [Arkenfox](desktop-browsers.md#arkenfox-advanced). Proprietary blobs are removed from Mozilla's code using the scripts developed for Fennec F-Droid.
@@ -167,6 +170,8 @@ We would suggest installing [uBlock Origin](browser-extensions.md#ublock-origin)
Mull comes with privacy protecting settings configured by default. You might consider configuring the **Delete browsing data on quit** options in Mull's settings if you want to close all your open tabs when quitting the app automatically, or clear other data such as browsing history and cookies automatically.
Because Mull has more advanced and strict privacy protections enabled by default compared to most browsers, some websites may not load or work properly unless you adjust those settings. You can consult this [list of known issues and workarounds](https://divestos.org/pages/broken#mull) for advice on a potential fix if you do encounter a broken site. Adjusting a setting in order to fix a website could impact your privacy/security, so make sure you fully understand any instructions you follow.
## iOS
On iOS, any app that can browse the web is [restricted](https://developer.apple.com/app-store/review/guidelines) to using an Apple-provided [WebKit framework](https://developer.apple.com/documentation/webkit), so there is little reason to use a third-party web browser.

View File

@@ -58,7 +58,7 @@ A [news aggregator](https://en.wikipedia.org/wiki/News_aggregator) is a way to k
![Feeder logo](assets/img/news-aggregators/feeder.png){ align=right }
**Feeder** is a modern RSS client for Android that has many [features](https://gitlab.com/spacecowboy/Feeder#features) and works well with folders of RSS feeds. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML) and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed).
**Feeder** is a modern RSS client for Android that has many [features](https://github.com/spacecowboy/Feeder#features) and works well with folders of RSS feeds. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML) and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed).
[:octicons-repo-16: Repository](https://github.com/spacecowboy/Feeder){ .md-button .md-button--primary }
[:octicons-code-16:](https://github.com/spacecowboy/Feeder){ .card-link title="Source Code" }
@@ -68,6 +68,7 @@ A [news aggregator](https://en.wikipedia.org/wiki/News_aggregator) is a way to k
<summary>Downloads</summary>
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.nononsenseapps.feeder.play)
- [:simple-github: GitHub](https://github.com/spacecowboy/Feeder/releases)
</details>
@@ -119,7 +120,7 @@ A [news aggregator](https://en.wikipedia.org/wiki/News_aggregator) is a way to k
![NetNewsWire logo](assets/img/news-aggregators/netnewswire.png){ align=right }
**NetNewsWire** a free and open-source feed reader for macOS and iOS with a focus on a native design and feature set. It supports the typical feed formats alongside built-in support for Reddit feeds.
**NetNewsWire** is a free and open-source feed reader for macOS and iOS with a focus on a native design and feature set. It supports the typical feed formats alongside built-in support for Reddit feeds.
[:octicons-home-16: Homepage](https://netnewswire.com){ .md-button .md-button--primary }
[:octicons-eye-16:](https://netnewswire.com/privacypolicy.html){ .card-link title="Privacy Policy" }

View File

@@ -68,13 +68,12 @@ Standard Notes has [joined Proton AG](https://standardnotes.com/blog/joining-for
- [:simple-firefoxbrowser: Firefox](https://notesnook.com/notesnook-web-clipper)
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/notesnook-web-clipper/kljhpemdlcnjohmfmkogahelkcidieaj)
- [:octicons-globe-16: Web](https://app.notesnook.com)
- [:simple-flathub: Flathub](https://flathub.org/apps/com.notesnook.Notesnook)
</details>
</div>
Notesnook only allows local note encryption with the [private vault](https://help.notesnook.com/lock-notes-with-private-vault) feature on their pro plan, otherwise your notes are not stored encrypted on your device. Your notes are always encrypted before being synced to their servers with keys which only you have access to.
### Joplin
<div class="admonition recommendation" markdown>

View File

@@ -170,6 +170,22 @@ In general, we define office suites as applications which could reasonably act a
</div>
### Criteria
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
#### Minimum Requirements
- Must be open source.
- Must implement "zero-trust" end-to-end encryption.
- Must support password-protected files.
#### Best-Case
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
- Should have a published audit from a reputable, independent third-party.
## Language services
### LanguageTool
@@ -207,14 +223,5 @@ In general, we define office suites as applications which could reasonably act a
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
#### Minimum Requirements
- Must be open source.
- Must implement "zero-trust" end-to-end encryption.
- Must support password-protected files.
#### Best-Case
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
- Should have a published audit from a reputable, independent third-party.
- Must be possible to self-host.

View File

@@ -159,7 +159,7 @@ As of February 2020 [IVPN applications are now open source](https://ivpn.net/blo
#### :material-check:{ .pg-green } Accepts Cash and Monero
In addition to accepting credit/debit cards and PayPal, IVPN accepts Bitcoin, **Monero** and **cash/local currency** (on annual plans) as anonymous forms of payment.
In addition to accepting credit/debit cards and PayPal, IVPN accepts Bitcoin, **Monero** and **cash/local currency** (on annual plans) as anonymous forms of payment. Prepaid cards with redeem codes are [also available](https://ivpn.net/knowledgebase/billing/voucher-cards-faq).
#### :material-check:{ .pg-green } WireGuard Support
@@ -242,7 +242,7 @@ Mullvad provides the source code for their desktop and mobile clients in their [
#### :material-check:{ .pg-green } Accepts Cash and Monero
Mullvad, in addition to accepting credit/debit cards and PayPal, accepts Bitcoin, Bitcoin Cash, **Monero** and **cash/local currency** as anonymous forms of payment. They also accept Swish and bank wire transfers.
Mullvad, in addition to accepting credit/debit cards and PayPal, accepts Bitcoin, Bitcoin Cash, **Monero** and **cash/local currency** as anonymous forms of payment. Prepaid cards with redeem codes are also available. Mullvad also accepts Swish and bank wire transfers.
#### :material-check:{ .pg-green } WireGuard Support

View File

@@ -6,10 +6,10 @@
<table>
<tbody>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.jonaharagon.com/"><img src="https://avatars.githubusercontent.com/u/3637842?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonah Aragon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ajonaharagon" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-jonaharagon" title="Project Management">📆</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Code">💻</a> <a href="#infra-jonaharagon" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#security-jonaharagon" title="Security">🛡️</a> <a href="https://blog.privacyguides.org/author/jonah/" title="Blogposts">📝</a> <a href="#design-jonaharagon" title="Design">🎨</a> <a href="#platform-jonaharagon" title="Packaging/porting to new platform">📦</a> <a href="#promotion-jonaharagon" title="Promotion">📣</a> <a href="#question-jonaharagon" title="Answering Questions">💬</a> <a href="#research-jonaharagon" title="Research">🔬</a> <a href="#maintenance-jonaharagon" title="Maintenance">🚧</a> <a href="#mentoring-jonaharagon" title="Mentoring">🧑‍🏫</a> <a href="#a11y-jonaharagon" title="Accessibility">️️️️♿️</a> <a href="#ideas-jonaharagon" title="Ideas, Planning, & Feedback">🤔</a> <a href="#video-jonaharagon" title="Videos">📹</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ajonaharagon" title="Bug reports">🐛</a> <a href="#business-jonaharagon" title="Business development">💼</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.jonaharagon.com/"><img src="https://avatars.githubusercontent.com/u/3637842?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonah Aragon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ajonaharagon" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-jonaharagon" title="Project Management">📆</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Code">💻</a> <a href="#infra-jonaharagon" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#security-jonaharagon" title="Security">🛡️</a> <a href="#blog-jonaharagon" title="Blogposts">📝</a> <a href="#design-jonaharagon" title="Design">🎨</a> <a href="#platform-jonaharagon" title="Packaging/porting to new platform">📦</a> <a href="#promotion-jonaharagon" title="Promotion">📣</a> <a href="#question-jonaharagon" title="Answering Questions">💬</a> <a href="#research-jonaharagon" title="Research">🔬</a> <a href="#maintenance-jonaharagon" title="Maintenance">🚧</a> <a href="#mentoring-jonaharagon" title="Mentoring">🧑‍🏫</a> <a href="#a11y-jonaharagon" title="Accessibility">️️️️♿️</a> <a href="#ideas-jonaharagon" title="Ideas, Planning, & Feedback">🤔</a> <a href="#video-jonaharagon" title="Videos">📹</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ajonaharagon" title="Bug reports">🐛</a> <a href="#business-jonaharagon" title="Business development">💼</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://polarbear.army/"><img src="https://avatars.githubusercontent.com/u/48640805?v=4" width="100px;" loading=lazy /><br /><sub><b>Daniel Nathan Gray</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dngray" title="Documentation">📖</a> <a href="#mentoring-dngray" title="Mentoring">🧑‍🏫</a> <a href="#projectManagement-dngray" title="Project Management">📆</a> <a href="#question-dngray" title="Answering Questions">💬</a> <a href="#research-dngray" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Adngray" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Adngray" title="Bug reports">🐛</a> <a href="#maintenance-dngray" title="Maintenance">🚧</a> <a href="#ideas-dngray" title="Ideas, Planning, & Feedback">🤔</a> <a href="#security-dngray" title="Security">🛡️</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://freddy.lol/"><img src="https://avatars.githubusercontent.com/u/25013506?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=freddy-m" title="Documentation">📖</a> <a href="https://blog.privacyguides.org/author/freddy/" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Afreddy-m" title="Reviewed Pull Requests">👀</a> <a href="#research-freddy-m" title="Research">🔬</a> <a href="#maintenance-freddy-m" title="Maintenance">🚧</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Afreddy-m" title="Bug reports">🐛</a> <a href="#ideas-freddy-m" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-freddy-m" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/blacklight447"><img src="https://avatars.githubusercontent.com/u/50110294?v=4" width="100px;" loading=lazy /><br /><sub><b>Niek de Wilde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=blacklight447" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ablacklight447" title="Bug reports">🐛</a> <a href="#research-blacklight447" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ablacklight447" title="Reviewed Pull Requests">👀</a> <a href="#infra-blacklight447" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#question-blacklight447" title="Answering Questions">💬</a> <a href="#ideas-blacklight447" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://blog.privacyguides.org/author/niek/" title="Blogposts">📝</a> <a href="#audio-blacklight447" title="Audio">🔊</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://freddy.lol/"><img src="https://avatars.githubusercontent.com/u/25013506?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=freddy-m" title="Documentation">📖</a> <a href="#blog-freddy-m" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Afreddy-m" title="Reviewed Pull Requests">👀</a> <a href="#research-freddy-m" title="Research">🔬</a> <a href="#maintenance-freddy-m" title="Maintenance">🚧</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Afreddy-m" title="Bug reports">🐛</a> <a href="#ideas-freddy-m" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-freddy-m" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/blacklight447"><img src="https://avatars.githubusercontent.com/u/50110294?v=4" width="100px;" loading=lazy /><br /><sub><b>Niek de Wilde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=blacklight447" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ablacklight447" title="Bug reports">🐛</a> <a href="#research-blacklight447" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ablacklight447" title="Reviewed Pull Requests">👀</a> <a href="#infra-blacklight447" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#question-blacklight447" title="Answering Questions">💬</a> <a href="#ideas-blacklight447" title="Ideas, Planning, & Feedback">🤔</a> <a href="#blog-blacklight447" title="Blogposts">📝</a> <a href="#audio-blacklight447" title="Audio">🔊</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hook9"><img src="https://avatars.githubusercontent.com/u/47239784?v=4" width="100px;" loading=lazy /><br /><sub><b>hook9</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hook9" title="Documentation">📖</a> <a href="#research-hook9" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ahook9" title="Reviewed Pull Requests">👀</a> <a href="#ideas-hook9" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
<tr>
@@ -27,7 +27,7 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://kaitebay.org/"><img src="https://avatars.githubusercontent.com/u/95620167?v=4" width="100px;" loading=lazy /><br /><sub><b>Kai Tebay</b></sub></a><br /><a href="#ideas-KaiTebay" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Documentation">📖</a> <a href="#research-KaiTebay" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/matchboxbananasynergy"><img src="https://avatars.githubusercontent.com/u/107055883?v=4" width="100px;" loading=lazy /><br /><sub><b>matchboxbananasynergy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matchboxbananasynergy" title="Documentation">📖</a> <a href="#research-matchboxbananasynergy" title="Research">🔬</a> <a href="#ideas-matchboxbananasynergy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amatchboxbananasynergy" title="Reviewed Pull Requests">👀</a> <a href="https://blog.privacyguides.org/author/mbananasynergy/" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/matchboxbananasynergy"><img src="https://avatars.githubusercontent.com/u/107055883?v=4" width="100px;" loading=lazy /><br /><sub><b>matchboxbananasynergy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matchboxbananasynergy" title="Documentation">📖</a> <a href="#research-matchboxbananasynergy" title="Research">🔬</a> <a href="#ideas-matchboxbananasynergy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amatchboxbananasynergy" title="Reviewed Pull Requests">👀</a> <a href="#blog-matchboxbananasynergy" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/actions"><img src="https://avatars.githubusercontent.com/u/44036562?v=4" width="100px;" loading=lazy /><br /><sub><b>GitHub Actions</b></sub></a><br /><a href="#infra-actions" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.netlify.com/"><img src="https://avatars.githubusercontent.com/u/7892489?v=4" width="100px;" loading=lazy /><br /><sub><b>Netlify</b></sub></a><br /><a href="#infra-netlify" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/security"><img src="https://avatars.githubusercontent.com/u/27347476?v=4" width="100px;" loading=lazy /><br /><sub><b>Dependabot</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dependabot" title="Code">💻</a> <a href="#infra-dependabot" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
@@ -37,7 +37,7 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.cloudflare.com/"><img src="https://avatars.githubusercontent.com/u/314135?v=4" width="100px;" loading=lazy /><br /><sub><b>Cloudflare</b></sub></a><br /><a href="#infra-cloudflare" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://opencollective.com/"><img src="https://avatars.githubusercontent.com/u/13403593?v=4" width="100px;" loading=lazy /><br /><sub><b>Open Collective</b></sub></a><br /><a href="#business-opencollective" title="Business development">💼</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://safing.io/"><img src="https://avatars.githubusercontent.com/u/20678162?v=4" width="100px;" loading=lazy /><br /><sub><b>Safing</b></sub></a><br /><a href="#financial-safing" title="Financial">💵</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.danarel.com/"><img src="https://avatars.githubusercontent.com/u/46383059?v=4" width="100px;" loading=lazy /><br /><sub><b>Dan Arel</b></sub></a><br /><a href="https://blog.privacyguides.org/author/dan/" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=danarel" title="Documentation">📖</a> <a href="#research-danarel" title="Research">🔬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.danarel.com/"><img src="https://avatars.githubusercontent.com/u/46383059?v=4" width="100px;" loading=lazy /><br /><sub><b>Dan Arel</b></sub></a><br /><a href="#blog-danarel" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=danarel" title="Documentation">📖</a> <a href="#research-danarel" title="Research">🔬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://techlore.tech/"><img src="https://avatars.githubusercontent.com/u/68134985?v=4" width="100px;" loading=lazy /><br /><sub><b>Techlore</b></sub></a><br /><a href="#financial-techlore" title="Financial">💵</a></td>
</tr>
<tr>
@@ -45,10 +45,10 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://simpleprivacy.fr/"><img src="https://avatars.githubusercontent.com/u/74207682?v=4" width="100px;" loading=lazy /><br /><sub><b>samsepi0l</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=d4rklynk" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/rollsicecream"><img src="https://avatars.githubusercontent.com/u/153316540?v=4" width="100px;" loading=lazy /><br /><sub><b>rollsicecream</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rollsicecream" title="Documentation">📖</a> <a href="#question-rollsicecream" title="Answering Questions">💬</a> <a href="#translation-rollsicecream" title="Translation">🌍</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Arollsicecream" title="Reviewed Pull Requests">👀</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://henryfisher.tech/"><img src="https://avatars.githubusercontent.com/u/64515030?v=4" width="100px;" loading=lazy /><br /><sub><b>Henry Fisher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=henry-fisher" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="https://blog.privacyguides.org/author/nate/" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="#blog-tnonate" title="Blogposts">📝</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://www.samhowell.uk/images/avatar-main.png" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="https://blog.privacyguides.org/author/sam/" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asddsaz"><img src="https://avatars.githubusercontent.com/u/42685606?v=4" width="100px;" loading=lazy /><br /><sub><b>asddsaz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asddsaz" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hugoncosta"><img src="https://avatars.githubusercontent.com/u/29380568?v=4" width="100px;" loading=lazy /><br /><sub><b>Hugo Costa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hugoncosta" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
@@ -408,12 +408,13 @@
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FishCoding"><img src="https://avatars.githubusercontent.com/u/16527725?v=4" width="100px;" loading=lazy /><br /><sub><b>Mario</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FishCoding" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skye.sh/"><img src="https://avatars.githubusercontent.com/u/48442092?v=4" width="100px;" loading=lazy /><br /><sub><b>skye</b></sub></a><br /><a href="#question-dioxias" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r2fo"><img src="https://avatars.githubusercontent.com/u/50496756?v=4" width="100px;" loading=lazy /><br /><sub><b>r2fo</b></sub></a><br /><a href="#translation-r2fo" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Alamtrinhdev" title="Bug reports">🐛</a> <a href="#question-lamtrinhdev" title="Answering Questions">💬</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://discuss.privacyguides.net/u/frostlike"><img src="https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/frostlike/288/3600_2.png" width="100px;" loading=lazy /><br /><sub><b>frostlike</b></sub></a><br /><a href="#question" title="Answering Questions">💬</a></td>
</tr>
<tr>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scholz.ruhr/"><img src="https://avatars.githubusercontent.com/u/21988035?v=4" width="100px;" loading=lazy /><br /><sub><b>Merlin Scholz</b></sub></a><br /><a href="#translation-merlinscholz" title="Translation">🌍</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jordanwarne.net/"><img src="https://avatars.githubusercontent.com/u/154663344?v=4" width="100px;" loading=lazy /><br /><sub><b>jordan warne</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jordan-warne" title="Documentation">📖</a></td>
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dzenan"><img src="https://avatars.githubusercontent.com/u/69632324?v=4" width="100px;" loading=lazy /><br /><sub><b>Dženan</b></sub></a><br /><a href="#translation-dzenan" title="Translation">🌍</a></td>
</tr>
</tbody>
<tfoot>

View File

@@ -10,8 +10,8 @@ ANALYTICS_FEEDBACK_TITLE="Was this page helpful?"
DESCRIPTION_HOMEPAGE="A socially motivated website which provides information about protecting your online data privacy and security."
FOOTER_ANALYTICS="Anonymous statistics preferences."
FOOTER_COPYRIGHT_AUTHOR="Privacy Guides and contributors."
FOOTER_DONATE="Consider donating to Privacy Guides."
FOOTER_NOTE="We are a 501(c)(3) non-profit and do not make money from recommendations or affiliate links."
FOOTER_INTRO="<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy."
FOOTER_NOTE="We do not make money from recommending certain products, and we do not use affiliate links."
HOMEPAGE_CTA_DESCRIPTION="It's important for a website like Privacy Guides to always stay up-to-date. We need our audience to keep an eye on software updates for the applications listed on our site and follow recent news about providers that we recommend. It's hard to keep up with the fast pace of the internet, but we try our best. If you spot an error, think a provider should not be listed, notice a qualified provider is missing, believe a browser plugin is no longer the best choice, or uncover any other issue, please let us know."
HOMEPAGE_DESCRIPTION="A socially motivated website which provides information about protecting your online data privacy and security."
HOMEPAGE_RSS_CHANGELOG_LINK="https://discuss.privacyguides.net/c/site-development/changelog/9.rss"
@@ -30,7 +30,6 @@ NAV_CHANGELOG="Changelog"
NAV_CODE_OF_CONDUCT="Code of Conduct"
NAV_COMMUNITY="Community"
NAV_CONTRIBUTING="Contributing"
NAV_DONATE="Donate"
NAV_FORUM="Forum"
NAV_HOME="Home"
NAV_INTERNET_BROWSING="Internet Browsing"

View File

@@ -38,11 +38,15 @@ extra:
deploy: !ENV DEPLOY_ID
privacy_guides:
footer:
donate: !ENV [FOOTER_DONATE, "Consider donating to Privacy Guides."]
intro:
!ENV [
FOOTER_INTRO,
"Privacy Guides is a non-profit, socially motivated website that provides information for protecting your data security and privacy.",
]
note:
!ENV [
FOOTER_NOTE,
"We are a 501(c)(3) non-profit and do not make money from recommendations or affiliate links.",
"We do not make money from recommending certain products, and we do not use affiliate links.",
]
copyright:
author:
@@ -168,15 +172,18 @@ extra:
- icon: simple/mastodon
link: https://mastodon.neat.computer/@privacyguides
name: !ENV [SOCIAL_MASTODON, "Mastodon"]
- icon: simple/matrix
link: https://matrix.to/#/#privacyguides:matrix.org
name: !ENV [SOCIAL_MATRIX, "Matrix"]
- icon: simple/discourse
link: https://discuss.privacyguides.net/
name: !ENV [SOCIAL_FORUM, "Forum"]
- icon: simple/github
link: https://github.com/privacyguides
name: !ENV [SOCIAL_GITHUB, "GitHub"]
- icon: material/hand-coin
link: /en/about/donate/
name: !ENV [NAV_DONATE, "Donate"]
- icon: simple/torbrowser
link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/
name: !ENV [SOCIAL_TOR_SITE, "Hidden service"]
alternate:
- name: English
link: /en/
@@ -293,7 +300,7 @@ theme:
- search.highlight
extra_css:
- assets/stylesheets/extra.css?v=3
- assets/stylesheets/extra.css?v=2
extra_javascript:
- assets/javascripts/randomize-element.js?v=1
- assets/javascripts/resolution.js?v=1
@@ -386,6 +393,7 @@ nav:
- "basics/email-security.md"
- "basics/vpn-overview.md"
- !ENV [NAV_ADVANCED_TOPICS, "Advanced Topics"]:
- "advanced/browser-fingerprinting.md"
- "advanced/dns-overview.md"
- "advanced/tor-overview.md"
- "advanced/payments.md"
@@ -455,12 +463,7 @@ nav:
- !ENV [NAV_TECHNICAL_GUIDES, "Technical Guides"]:
- "meta/uploading-images.md"
- "meta/git-recommendations.md"
- !ENV [NAV_DONATE, "Donate"]: "about/donate/"
- !ENV [NAV_CHANGELOG, "Changelog"]:
"https://github.com/privacyguides/privacyguides.org/releases"
- !ENV [NAV_FORUM, "Forum"]: "https://discuss.privacyguides.net/"
- !ENV [NAV_BLOG, "Blog"]: "https://blog.privacyguides.org/"
validation:
nav:
not_found: info

3
run.sh
View File

@@ -128,9 +128,6 @@ markdown_extensions:
sources:
exclude:
- tools.md
targets:
exclude:
- about/*
EOT
trap 'rm $PWD/.mkdocs-insiders-$random_num.yml' EXIT
fi

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512"><defs><linearGradient xlink:href="#a" id="b" x1="188.6123" x2="193.544" y1="165.2058" y2="216.8152" gradientTransform="rotate(5 4448.1558 -4203.82) scale(2.9367)" gradientUnits="userSpaceOnUse"/><linearGradient id="a"><stop offset="0"/><stop offset="1" stop-color="#fff9f9" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#a" id="c" x1="167.8" x2="270.6" y1="76.9" y2="64.2" gradientTransform="rotate(5 465.3093 -2049.9155) scale(1.5008)" gradientUnits="userSpaceOnUse"/></defs><rect width="494.5974" height="494.5974" x="8.7013" y="8.7013" fill="#fff" ry="114.7779"/><g transform="translate(29.1944 81.639) scale(1.3622)"><path fill="url(#b)" d="m160 205 154 42-141 44-155-42Z"/><path fill="url(#c)" d="M160-35v240l154 42 1-253z"/><path fill="none" d="M160 205V-35m0 240L18 249m142-44 154 41"/><path d="m84 109 35 54V98l21-7v91l-27 9-35-54v65l-21 6v-91z"/><rect width="86.1" height="12.6" x="185" y="97" fill="#bebebe" ry="2.3" transform="skewY(15) scale(.9669 1)"/><path fill="#bebebe" d="m181 169 99 26 2 3v8c0 1-1 2-2 1l-99-26-2-3v-7c0-2 1-2 2-2zm0-47 99 27 2 2v8l-2 2-99-27c-1 0-2-1-2-3v-7z"/></g></svg>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="a"><rect width="1024" height="1024" rx="200" fill="#fff"/></clipPath></defs><rect x="7.0459e-7" y="6.4966e-7" width="33.867" height="33.867" rx="10.16" ry="10.16" stroke-width=".033867"/><g transform="matrix(.037398 0 0 .037398 -2.2146 -2.2164)"><g clip-path="url(#a)" fill="#fff"><path d="m724.98 682.92c-17.255 50.411-51.835 93.065-97.588 120.37-45.752 27.307-99.71 37.496-152.27 28.753-52.56-8.743-100.31-35.85-134.76-76.498s-53.359-92.199-53.365-145.48v-110.25l79.121 33.053v77.152c-7e-3 20.779 4.434 41.318 13.024 60.237 8.59 18.92 21.131 35.781 36.78 49.451 2.97 2.587 6.053 5.107 9.236 7.459 23.357 17.388 51.402 27.352 80.494 28.597 0.99 0 1.946 0.079 2.925 0.101 0.979 0.023 2.25 0 3.375 0h3.375c1.125 0 1.935 0 2.925-0.101 29.081-1.248 57.116-11.203 80.471-28.575 3.173-2.351 6.255-4.86 9.237-7.447 20.556-17.98 35.656-41.366 43.582-67.5zm12.015-268.92v196.06c0 2.531 0 5.074-0.158 7.605l-78.963-33.019v-170.65c-0.013-37.684-14.607-73.901-40.725-101.07-26.119-27.164-61.735-43.168-99.389-44.66-37.655-1.492-74.426 11.644-102.61 36.657-28.186 25.013-45.6 59.962-48.594 97.526-0.281 3.803-0.439 7.662-0.439 11.543v48.712l-79.121-33.075v-240.64h225c59.674 0 116.9 23.705 159.1 65.901s65.901 99.425 65.901 159.1z"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,149 @@
/**
* @overview Generates a list of topics on a Discourse forum.
* @author Jonah Aragon <jonah@triplebit.net>
* @version 3.0.0
* @license
* Copyright (c) 2023 - 2024 Jonah Aragon
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
async function getData(url) {
const response = await fetch(url);
return response.json()
}
async function main() {
const elements = document.querySelectorAll("div[data-forum]");
for (let j = 0; j < elements.length; j++) {
var topics = elements[j];
var dataset = topics.dataset;
console.log("Fetching data from " + dataset.feed)
const data = await getData(dataset.feed);
var list = data['topic_list']['topics'];
var profiles = data['users'];
var count = dataset.count;
for (var i = 0; i < count; i++) {
if (list[i]['pinned'] == true) {
count++;
continue;
}
var title = list[i]['title'];
var id = list[i]['id'];
var topic = document.createElement("div");
topic.className = "discourse-topic";
var h3 = document.createElement('p');
h3.className = "discourse-title";
var a1 = document.createElement('a');
a1.href = dataset.forum + '/t/' + id;
a1.innerText = title;
h3.appendChild(a1);
var postinfo = document.createElement('ul');
postinfo.className = "discourse-data";
var date = document.createElement('li');
date.className = "discourse-date";
var datestring = list[i]['bumped_at'];
var dateobject = new Date(datestring);
var now = new Date();
var diff = now - dateobject;
var minutes = Math.floor(diff / 60000);
var hours = Math.floor(minutes / 60);
var days = Math.floor(hours / 24);
if (days > 0) {
if (days == 1) {
date.innerText = "Last reply 1 day ago";
}
else {
date.innerText = "Last reply " + days + " days ago";
}
}
else if (hours > 0){
if (hours == 1) {
date.innerText = "Last reply 1 hour ago";
}
else {
date.innerText = "Last reply "+ hours + " hours ago";
}
}
else {
if (minutes == 1) {
date.innerText = "Last reply 1 minute ago";
}
else {
date.innerText = "Last reply " + minutes + " minutes ago";
}
}
postinfo.appendChild(date);
var author_id = list[i]['posters'][0]['user_id'];
var author_data = profiles.find(profile => profile['id'] == author_id);
var author = document.createElement('li');
author.className = "discourse-author";
var avatar = document.createElement('img');
avatar.src = dataset.forum + author_data['avatar_template'].replace("{size}", "40");
avatar.width = 20;
avatar.height = 20;
author.appendChild(avatar);
var namespan = document.createElement('span');
namespan.innerText = " " + author_data['username'];
author.appendChild(namespan);
postinfo.appendChild(author);
var likes = document.createElement('li');
likes.className = "discourse-likes";
if (list[i]['like_count'] == 1) {
likes.innerText = "1 Like";
}
else {
likes.innerText = list[i]['like_count'] + " Likes";
}
postinfo.appendChild(likes);
var replies = document.createElement('li');
replies.className = "discourse-replies";
var reply_count = list[i]['posts_count'] - 1;
if (reply_count == 1) {
replies.innerText = "1 Reply"
}
else {
replies.innerText = reply_count + " Replies"
}
postinfo.appendChild(replies);
topic.appendChild(h3);
topic.appendChild(postinfo);
topics.appendChild(topic);
}
}
}
main();

View File

@@ -65,7 +65,7 @@
--pg-blue: #74b9f1;
--pg-green: #72cd75;
--pg-blue-gray: #9ab2bc;
--pg-viridian: #36d1a0;
--pg-viridian: #40826d;
--md-footer-bg-color--dark: var(--md-default-bg-color);
}
@@ -523,10 +523,3 @@ path[d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-
width: 100%;
padding: 1em !important;
}
/* Footer text links */
html .md-footer-meta.md-typeset a.mdx-footer__link {
/* color: var(--md-primary-fg-color--light); */
border-bottom: .05rem dotted var(--md-default-fg-color--light);
text-decoration: none;
}

View File

@@ -114,7 +114,7 @@ article.md-content__inner > * {
margin-right: 0;
text-align: right;
} */
#what-should-i-do, #what-should-i-do ~ :not( .mdx-cat ~ * ):not( .mdx-cta ) {
#what-should-i-do, #what-should-i-do ~ :not( .mdx-cat ~ * ):not( .mdx-cta ):not( .mdx-discourse-topics) {
margin-left: auto;
margin-right: 0;
text-align: right;
@@ -134,3 +134,56 @@ article.md-content__inner > hr {
--md-icon-size: 1.8em;
margin: 0.4rem;
}
.mdx-discourse-topics {
max-width: 100% !important;
margin-left: auto;
margin-right: auto;
text-align: center;
}
.mdx-discourse-topics .topics-list {
grid-template-columns: repeat(5, 1fr);
}
.mdx-discourse-topics .discourse-title {
min-height: 4em;
}
.mdx-discourse-topics .topics-list {
display: grid;
text-align: left;
}
.mdx-discourse-topics .topics-list .discourse-title {
line-height: 1.2;
margin: 0;
}
.mdx-discourse-topics .topics-list .discourse-topic {
padding: 0.4em;
margin-bottom: 1em;
}
.mdx-discourse-topics .topics-list .discourse-data {
color: var(--md-default-fg-color--light);
list-style: none;
padding: 0;
margin: 0;
}
.mdx-discourse-topics .topics-list .discourse-data li {
margin: 0;
}
.mdx-discourse-topics .topics-list .discourse-data li img {
vertical-align: middle;
}
@media screen and (max-width: 1000px) {
.mdx-discourse-topics .topics-list {
grid-template-columns: repeat(3, 1fr);
}
.mdx-discourse-topics .topics-list .discourse-title {
min-height: 0;
}
}
@media screen and (max-width: 600px) {
.mdx-discourse-topics .topics-list {
grid-template-columns: repeat(1, 1fr);
}
.mdx-discourse-topics .topics-list .discourse-title {
min-height: 0;
}
}

View File

@@ -23,7 +23,7 @@
{% extends "main.html" %}
{% set homepage = config.extra.privacy_guides.homepage %}
{% block extrahead %}
<link rel="stylesheet" href="{{ 'assets/stylesheets/home.css?v=3.3.0' | url }}">
<link rel="stylesheet" href="{{ 'assets/stylesheets/home.css?v=20240501' | url }}">
{% for feed in homepage.rss %}
<link rel="alternate" type="application/rss+xml" title="{{ feed.title }}" href="{{ feed.link }}">
{% endfor %}
@@ -49,6 +49,24 @@
</section>
{% endblock %}
{% block content %}
{% if config.theme.language == "en" %}
<div class="mdx-discourse-topics">
<h2>Top discussions this week</h2>
<div
class="topics-list"
data-forum="https://discuss.privacyguides.net"
data-feed="https://discuss.privacyguides.net/top.json?period=weekly"
data-count="5">
</div>
<noscript>
<a href="https://discuss.privacyguides.net/" class="md-button md-button--primary">
Join the forum
</a>
</noscript>
<hr />
</div>
{% endif %}
{{ page.content }}
<div class="mdx-cta">
<hr />
@@ -62,4 +80,26 @@
<p>{{ cta.description }}</p>
{% endfor %}
</div>
{% if config.theme.language == "en" %}
<div class="mdx-discourse-topics">
<h3>Join a discussion</h3>
<div
class="topics-list"
data-forum="https://discuss.privacyguides.net"
data-feed="https://discuss.privacyguides.net/latest.json"
data-count="15">
</div>
<noscript>
<a href="https://discuss.privacyguides.net/" class="md-button md-button--primary">
Join the forum
</a>
</noscript>
<hr />
</div>
{% endif %}
{% endblock %}
{% block scripts %}
<script src="{{ 'assets/javascripts/discourse-topics.js' | url }}"></script>
{{ super() }}
{% endblock %}

View File

@@ -19,32 +19,25 @@
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
-->
{% set footer = config.extra.privacy_guides.footer %}
{% set copyright = config.extra.privacy_guides.footer %}
<!-- Copyright information -->
<div class="md-copyright">
{% if footer %}
{% if copyright %}
<div class="md-copyright__highlight" title="This version of Privacy Guides was built on {{ build_date_utc.strftime('%B %d, %Y at %I:%M%p') }}">
{{ copyright.intro }}
<br />
{{ copyright.note }}
<br />
<a href='/license'>
{% for icon in footer.license %}
{% for icon in copyright.license %}
<span class="twemoji">{% include ".icons/" ~ icon ~ ".svg" %}</span>
{% endfor %}
</a>
{{ footer.copyright.date }}
<a href="{{ 'about/contributors' | url }}">
{{ footer.copyright.author }}
{{ copyright.copyright.date }} {{ copyright.copyright.author }}
<a href='#__consent'>
{{ copyright.analytics }}
</a>
<a href='#__consent' class="mdx-footer__link">
{{ footer.analytics }}
</a>
<br>
<a href="{{ 'about/donate' | url }}" class="mdx-footer__link">
{{ footer.donate }}
</a>
{{ footer.note }}
</div>
{% endif %}
</div>