<PersistentState>
<option name="values">
<map>
- <entry key="url" value="jar:file:/home/soren/Android/android-studio/plugins/android/lib/android.jar!/images/material_design_icons/action/ic_settings_overscan_black_24dp.xml" />
+ <entry key="url" value="jar:file:/home/soren/Android/android-studio/plugins/android/lib/android.jar!/images/material_design_icons/action/ic_open_in_browser_black_24dp.xml" />
</map>
</option>
</PersistentState>
</option>
<option name="values">
<map>
- <entry key="outputName" value="wide_viewport_enabled_light" />
+ <entry key="outputName" value="proxy_enabled_light" />
<entry key="sourceFile" value="$USER_HOME$/ownCloud/Android/Privacy Browser/Icons/Icons/link_off_light.svg" />
</map>
</option>
<w>radiobutton</w>
<w>radiogroup</w>
<w>rbga</w>
+ <w>redisplays</w>
<w>redmine</w>
<w>referer</w>
<w>refreshlayout</w>
<w>sslissuedtoorganization</w>
<w>sslissuedtoorganizationalunit</w>
<w>sslstartdate</w>
+ <w>startpage</w>
<w>stoutner</w>
<w>subdocument</w>
<w>subdomain</w>
implementation 'androidx.arch.core:core-runtime:2.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'
+ implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
implementation 'androidx.drawerlayout:drawerlayout:1.0.0'
implementation 'androidx.preference:preference:1.1.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
<p><img class="left" src="../shared_images/sort_selected_light.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
- <p><img class="left" src="../shared_images/orbot_dark.png"> <code>orbot</code> is a modified version of
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
- which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
- The full text of the license is below. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/cookie_dark.png"> <code>cookie</code> was created by Google.
It is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>
and can be downloaded from <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>. It is unchanged except for layout information like color and size.</p>
<p><img class="icon" src="../shared_images/map_dark.png"> map.</p>
<p><img class="icon" src="../shared_images/more_dark.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_dark.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_dark.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_dark.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_dark.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_dark.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
<p><img class="left" src="../shared_images/sort_selected_light.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
- <p><img class="left" src="../shared_images/orbot_light.png"> <code>orbot</code> is a modified version of
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
- which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
- The full text of the license is below. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/cookie_light.png"> <code>cookie</code> was created by Google.
It is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>
and can be downloaded from <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>. It is unchanged except for layout information like color and size.</p>
<p><img class="icon" src="../shared_images/map_light.png"> map.</p>
<p><img class="icon" src="../shared_images/more_light.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_light.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_light.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_light.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_light.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_light.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2019 Bernhard G. Keller. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2016 Aaron Gerlach <aaron@gerlach.com>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/dark_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+
+ <p>Faktoren, die die Privatsphäre im Web einschränken wollen, lassen sich hauptsächlich in zwei verschiedene Kategorien unterteilen:
+ Neugierige Behörden mit Zugriff auf Internetprovider und grosse Konzerne, die "soziale" und Werbe-Netzwerke betreiben.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Neugierige Behörden</h3>
+
+ <p>Oft spähen neugierige Behörden Bürger aus, um Fehlverhalten und Menschenrechtsaktivitäten zu bestrafen.
+ Üblicherweise betreiben sie entweder die Internetprovider selbst oder sie können Provider dazu zwingen, Informationen über jede besuchte IP-Adresse und die zugehörigen Benutzer herauszugeben.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Megafirmen</h3>
+
+ <p>Wenn ein Benutzer sich mit einem Webserver verbindet, kann der Webserver seine IP-Adresse sehen.
+ Obwohl es keine ausgereifte Methode ist, können IP-Adressen in physische Adressen umgewandelt werden - <a href="https://www.whatismyip.com/">mit erstaunlicher Genauigkeit</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Große Megafirmen, die "soziale" und Werbe-Netzwerke betreiben, nutzen jedoch Profile an Informationen, um Benutzer über ihre Geräte und IP-Adressen hinweg zu tracken.
+ Diese Profile nutzen verschiedene Techniken um Benutzer ausfindig zu machen, inklusive JavaScript, Cookies, Tracking-IDs und den sogenannten
+ <a href="https://panopticlick.eff.org/">"Browser-Fingerabdruck" (fingerprinting)</a>.
+ Weil die große Mehrheit der Websites im Internet Werbung entweder von den großen Werbenetzwerken oder von eingebetteten Social-Media-Buttons mit ihrem zugewiesenen JavaScript lädt,
+ haben die großen Megafirmen Profile von so gut wie jedem Internetnutzer angefertigt und verfolgen deren Aktivitäten über zueinander unabhängige Seiten.</p>
+
+ <p>Sie verfolgen jede besuchte Seite, Alles online Gekaufte, jede für Einkäufe genutzte Kreditkarte, jede Adresse,
+ an die Waren verschickt werden, und die GPS-Metadaten von jedem ins Internet hochgeladene Foto.
+ Sie fertigen Profile an, die Alter, Geschlecht, Beziehungsstatus, Adresse, politische und religiöse Ansichten, familiäre Umstände,
+ Anzahl der Haustiere und alles Andere, was sie über einen Nutzer herausfinden können, beinhalten.
+ Sie kaufen sogar ganze Datenbanken mit Informationen über Kreditkartennutzungen in Geschäften auf, damit sie Offline-Einkaufsverhalten von Nutzern in ihren Profilen nachverfolgen können.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>Der einzige und beste Schutz der Privatsphäre gegen Megafirmen ist es, mit deaktivieren JavaScript durchs Web zu surfen, gefolgt von geblockten Werbenetzwerken,
+ deaktivierten Cookies und DOM-Speicher und das Benutzen eines Browsers, der schwierig zu "fingerprinten" ist.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_dark.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+
+ <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Herunterladen von Dateien mittels TOR</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn't have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2019 Bernhard G. Keller. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2016 Aaron Gerlach <aaron@gerlach.com>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/light_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+
+ <p>Faktoren, die die Privatsphäre im Web einschränken wollen, lassen sich hauptsächlich in zwei verschiedene Kategorien unterteilen:
+ Neugierige Behörden mit Zugriff auf Internetprovider und grosse Konzerne, die "soziale" und Werbe-Netzwerke betreiben.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Neugierige Behörden</h3>
+
+ <p>Oft spähen neugierige Behörden Bürger aus, um Fehlverhalten und Menschenrechtsaktivitäten zu bestrafen.
+ Üblicherweise betreiben sie entweder die Internetprovider selbst oder sie können Provider dazu zwingen, Informationen über jede besuchte IP-Adresse und die zugehörigen Benutzer herauszugeben.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Megafirmen</h3>
+
+ <p>Wenn ein Benutzer sich mit einem Webserver verbindet, kann der Webserver seine IP-Adresse sehen.
+ Obwohl es keine ausgereifte Methode ist, können IP-Adressen in physische Adressen umgewandelt werden - <a href="https://www.whatismyip.com/">mit erstaunlicher Genauigkeit</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Große Megafirmen, die "soziale" und Werbe-Netzwerke betreiben, nutzen jedoch Profile an Informationen, um Benutzer über ihre Geräte und IP-Adressen hinweg zu tracken.
+ Diese Profile nutzen verschiedene Techniken um Benutzer ausfindig zu machen, inklusive JavaScript, Cookies, Tracking-IDs und den sogenannten
+ <a href="https://panopticlick.eff.org/">"Browser-Fingerabdruck" (fingerprinting)</a>.
+ Weil die große Mehrheit der Websites im Internet Werbung entweder von den großen Werbenetzwerken oder von eingebetteten Social-Media-Buttons mit ihrem zugewiesenen JavaScript lädt,
+ haben die großen Megafirmen Profile von so gut wie jedem Internetnutzer angefertigt und verfolgen deren Aktivitäten über zueinander unabhängige Seiten.</p>
+
+ <p>Sie verfolgen jede besuchte Seite, Alles online Gekaufte, jede für Einkäufe genutzte Kreditkarte, jede Adresse,
+ an die Waren verschickt werden, und die GPS-Metadaten von jedem ins Internet hochgeladene Foto.
+ Sie fertigen Profile an, die Alter, Geschlecht, Beziehungsstatus, Adresse, politische und religiöse Ansichten, familiäre Umstände,
+ Anzahl der Haustiere und alles Andere, was sie über einen Nutzer herausfinden können, beinhalten.
+ Sie kaufen sogar ganze Datenbanken mit Informationen über Kreditkartennutzungen in Geschäften auf, damit sie Offline-Einkaufsverhalten von Nutzern in ihren Profilen nachverfolgen können.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>Der einzige und beste Schutz der Privatsphäre gegen Megafirmen ist es, mit deaktivieren JavaScript durchs Web zu surfen, gefolgt von geblockten Werbenetzwerken,
+ deaktivierten Cookies und DOM-Speicher und das Benutzen eines Browsers, der schwierig zu "fingerprinten" ist.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_light.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+
+ <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Herunterladen von Dateien mittels TOR</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn't have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2019 Bernhard G. Keller. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- Translation 2016 Aaron Gerlach <aaron@gerlach.com>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/dark_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Tor und seine Grenzen</h3>
-
- <p>Faktoren, die die Privatsphäre im Web einschränken wollen, lassen sich hauptsächlich in zwei verschiedene Kategorien unterteilen:
- Neugierige Behörden mit Zugriff auf Internetprovider und grosse Konzerne, die "soziale" und Werbe-Netzwerke betreiben.
- TOR (The Onion Router) ist nützlich, wenn es auf den Schutz der Privatsphäre vor neugierigen Behörden ankommt, nicht jedoch bei Konzernen bzw. Megafirmen.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Neugierige Behörden</h3>
-
- <p>Oft spähen neugierige Behörden Bürger aus, um Fehlverhalten und Menschenrechtsaktivitäten zu bestrafen.
- Üblicherweise betreiben sie entweder die Internetprovider selbst oder sie können Provider dazu zwingen, Informationen über jede besuchte IP-Adresse und die zugehörigen Benutzer herauszugeben.
- TOR wurde entwickelt, um diese Eingriffe in die Privatsphäre zu bekämpfen, indem es die Daten verschlüsselt, die ein Nutzer sendet und sie durch viele verschiedene Server schleust,
- bevor sie die Zieladresse erreichen.
- Das bedeutet, dass kein individueller Internetprovider, Server oder Website sowohl die <a href="https://ipleak.net">IP-Adresse des Nutzers</a>
- als auch die IP-Adresse des letztendlich besuchten Webservers erfährt.
- Neugierige Behörden und die von ihnen kontrollierten Internetprovider können nur vermuten, welche Webserver ein Benutzer besucht, da sie letztendlich nur sehen, dass er TOR benutzt.
- In einigen Teilen der Welt könnte das Benutzen von TOR als illegale Aktivität ausgelegt werden ("wenn Du nichts zu verstecken hättest,
- würdest Du nicht Deinen Traffic vor uns verstecken") und Benutzer könnten bestraft werden, da die Regierung vermutet, sie würden etwas Untersagtes tun.
- Also kann TOR hilfreich sein, ein Allheilmittel ist es jedoch nicht.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Megafirmen</h3>
-
- <p>Wenn ein Benutzer sich mit einem Webserver verbindet, kann der Webserver seine IP-Adresse sehen.
- Obwohl es keine ausgereifte Methode ist, können IP-Adressen in physische Adressen umgewandelt werden - <a href="https://www.whatismyip.com/">mit erstaunlicher Genauigkeit</a>.
- Kleine Webserver nutzen normalerweise die IP-Adresse, um festzulegen, woher der Benutzer die Seite besucht. TOR ist eine gute Lösung, wenn man seinen Standort vor diesen Servern verstecken möchte.
- Große Megafirmen, die "soziale" und Werbe-Netzwerke betreiben, nutzen jedoch Profile an Informationen, um Benutzer über ihre Geräte und IP-Adressen hinweg zu tracken.
- Diese Profile nutzen verschiedene Techniken um Benutzer ausfindig zu machen, inklusive JavaScript, Cookies, Tracking-IDs und den sogenannten
- <a href="https://panopticlick.eff.org/">"Browser-Fingerabdruck" (fingerprinting)</a>.
- Weil die große Mehrheit der Websites im Internet Werbung entweder von den großen Werbenetzwerken oder von eingebetteten Social-Media-Buttons mit ihrem zugewiesenen JavaScript lädt,
- haben die großen Megafirmen Profile von so gut wie jedem Internetnutzer angefertigt und verfolgen deren Aktivitäten über zueinander unabhängige Seiten.</p>
-
- <p>Sie verfolgen jede besuchte Seite, Alles online Gekaufte, jede für Einkäufe genutzte Kreditkarte, jede Adresse,
- an die Waren verschickt werden, und die GPS-Metadaten von jedem ins Internet hochgeladene Foto.
- Sie fertigen Profile an, die Alter, Geschlecht, Beziehungsstatus, Adresse, politische und religiöse Ansichten, familiäre Umstände,
- Anzahl der Haustiere und alles Andere, was sie über einen Nutzer herausfinden können, beinhalten.
- Sie kaufen sogar ganze Datenbanken mit Informationen über Kreditkartennutzungen in Geschäften auf, damit sie Offline-Einkaufsverhalten von Nutzern in ihren Profilen nachverfolgen können.
- Weil sie bereits weitaus genauere Adressinformationen über einen Nutzer haben, als eine IP-Adresse aussagt, bietet TOR keinen echten Schutz der Privatsphäre gegen derartige Megafirmen.</p>
-
- <p>Der einzige und beste Schutz der Privatsphäre gegen Megafirmen ist es, mit deaktivieren JavaScript durchs Web zu surfen, gefolgt von geblockten Werbenetzwerken,
- deaktivierten Cookies und DOM-Speicher und das Benutzen eines Browsers, der schwierig zu "fingerprinten" ist.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_dark.png"> Benutzen von TOR</h3>
-
- <p>Neben den vorhin genannten Einschränkungen kann TOR in bestimmten Situationen hilfreich sein.
- Das TOR Project bietet eine App für Android namens Orbot an, die auf <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- verfügbar ist und überall sonst, wo Privacy Browser angeboten wird. Privacy Browser hat eine Option, um Orbot als Proxy zu benutzen.
- Wenn diese aktiviert wird, hat Privacy Browser einen hellblauen Hintergrund für die Adresszeile statt dem standardmäßigen Hellgrau.
- Wenn Privacy Browsers Orbot-Proxy-Einstellung aktiviert ist, wird das Internet ausschließlich funktionieren, solange Orbot ausgeführt und mit dem TOR-Netzwerk verbunden ist.
- Weil die Daten durch verschiedene Anlaufstellen geleitet werden, ist das Nutzen von TOR oft weitaus langsamer als bei einer direkten Verbindung mit dem Internet.</p>
-
- <img class="center" src="images/tor.png">
-
-
- <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Herunterladen von Dateien mittels TOR</h3>
-
- <p>Wenn Orbot im Proxy-Modus genutzt wird, werden zwar beim Surfen mit dem Privacy Browser die Daten über das TOR-Netzwerk geroutet, nicht jedoch heruntergeladene Dateien.
- Die Ursache dafür ist, dass Privacy Browser den in Android eingebauten Download-Manager verwendet, der keine Proxy-Optionen hat.
- Benutzer, die auch Dateien über Orbot herunterladen möchten, müssen daher dessen VPN-Modus aktivieren.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2019 Bernhard G. Keller. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- Translation 2016 Aaron Gerlach <aaron@gerlach.com>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/light_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Tor und seine Grenzen</h3>
-
- <p>Faktoren, die die Privatsphäre im Web einschränken wollen, lassen sich hauptsächlich in zwei verschiedene Kategorien unterteilen:
- Neugierige Behörden mit Zugriff auf Internetprovider und grosse Konzerne, die "soziale" und Werbe-Netzwerke betreiben.
- TOR (The Onion Router) ist nützlich, wenn es auf den Schutz der Privatsphäre vor neugierigen Behörden ankommt, nicht jedoch bei Konzernen bzw. Megafirmen.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Neugierige Behörden</h3>
-
- <p>Oft spähen neugierige Behörden Bürger aus, um Fehlverhalten und Menschenrechtsaktivitäten zu bestrafen.
- Üblicherweise betreiben sie entweder die Internetprovider selbst oder sie können Provider dazu zwingen, Informationen über jede besuchte IP-Adresse und die zugehörigen Benutzer herauszugeben.
- TOR wurde entwickelt, um diese Eingriffe in die Privatsphäre zu bekämpfen, indem es die Daten verschlüsselt, die ein Nutzer sendet und sie durch viele verschiedene Server schleust,
- bevor sie die Zieladresse erreichen.
- Das bedeutet, dass kein individueller Internetprovider, Server oder Website sowohl die <a href="https://ipleak.net">IP-Adresse des Nutzers</a>
- als auch die IP-Adresse des letztendlich besuchten Webservers erfährt.
- Neugierige Behörden und die von ihnen kontrollierten Internetprovider können nur vermuten, welche Webserver ein Benutzer besucht, da sie letztendlich nur sehen, dass er TOR benutzt.
- In einigen Teilen der Welt könnte das Benutzen von TOR als illegale Aktivität ausgelegt werden ("wenn Du nichts zu verstecken hättest,
- würdest Du nicht Deinen Traffic vor uns verstecken") und Benutzer könnten bestraft werden, da die Regierung vermutet, sie würden etwas Untersagtes tun.
- Also kann TOR hilfreich sein, ein Allheilmittel ist es jedoch nicht.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Megafirmen</h3>
-
- <p>Wenn ein Benutzer sich mit einem Webserver verbindet, kann der Webserver seine IP-Adresse sehen.
- Obwohl es keine ausgereifte Methode ist, können IP-Adressen in physische Adressen umgewandelt werden - <a href="https://www.whatismyip.com/">mit erstaunlicher Genauigkeit</a>.
- Kleine Webserver nutzen normalerweise die IP-Adresse, um festzulegen, woher der Benutzer die Seite besucht. TOR ist eine gute Lösung, wenn man seinen Standort vor diesen Servern verstecken möchte.
- Große Megafirmen, die "soziale" und Werbe-Netzwerke betreiben, nutzen jedoch Profile an Informationen, um Benutzer über ihre Geräte und IP-Adressen hinweg zu tracken.
- Diese Profile nutzen verschiedene Techniken um Benutzer ausfindig zu machen, inklusive JavaScript, Cookies, Tracking-IDs und den sogenannten
- <a href="https://panopticlick.eff.org/">"Browser-Fingerabdruck" (fingerprinting)</a>.
- Weil die große Mehrheit der Websites im Internet Werbung entweder von den großen Werbenetzwerken oder von eingebetteten Social-Media-Buttons mit ihrem zugewiesenen JavaScript lädt,
- haben die großen Megafirmen Profile von so gut wie jedem Internetnutzer angefertigt und verfolgen deren Aktivitäten über zueinander unabhängige Seiten.</p>
-
- <p>Sie verfolgen jede besuchte Seite, Alles online Gekaufte, jede für Einkäufe genutzte Kreditkarte, jede Adresse,
- an die Waren verschickt werden, und die GPS-Metadaten von jedem ins Internet hochgeladene Foto.
- Sie fertigen Profile an, die Alter, Geschlecht, Beziehungsstatus, Adresse, politische und religiöse Ansichten, familiäre Umstände,
- Anzahl der Haustiere und alles Andere, was sie über einen Nutzer herausfinden können, beinhalten.
- Sie kaufen sogar ganze Datenbanken mit Informationen über Kreditkartennutzungen in Geschäften auf, damit sie Offline-Einkaufsverhalten von Nutzern in ihren Profilen nachverfolgen können.
- Weil sie bereits weitaus genauere Adressinformationen über einen Nutzer haben, als eine IP-Adresse aussagt, bietet TOR keinen echten Schutz der Privatsphäre gegen derartige Megafirmen.</p>
-
- <p>Der einzige und beste Schutz der Privatsphäre gegen Megafirmen ist es, mit deaktivieren JavaScript durchs Web zu surfen, gefolgt von geblockten Werbenetzwerken,
- deaktivierten Cookies und DOM-Speicher und das Benutzen eines Browsers, der schwierig zu "fingerprinten" ist.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_light.png"> Benutzen von TOR</h3>
-
- <p>Neben den vorhin genannten Einschränkungen kann TOR in bestimmten Situationen hilfreich sein.
- Das TOR Project bietet eine App für Android namens Orbot an, die auf <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- verfügbar ist und überall sonst, wo Privacy Browser angeboten wird. Privacy Browser hat eine Option, um Orbot als Proxy zu benutzen.
- Wenn diese aktiviert wird, hat Privacy Browser einen hellblauen Hintergrund für die Adresszeile statt dem standardmäßigen Hellgrau.
- Wenn Privacy Browsers Orbot-Proxy-Einstellung aktiviert ist, wird das Internet ausschließlich funktionieren, solange Orbot ausgeführt und mit dem TOR-Netzwerk verbunden ist.
- Weil die Daten durch verschiedene Anlaufstellen geleitet werden, ist das Nutzen von TOR oft weitaus langsamer als bei einer direkten Verbindung mit dem Internet.</p>
-
- <img class="center" src="images/tor.png">
-
-
- <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Herunterladen von Dateien mittels TOR</h3>
-
- <p>Wenn Orbot im Proxy-Modus genutzt wird, werden zwar beim Surfen mit dem Privacy Browser die Daten über das TOR-Netzwerk geroutet, nicht jedoch heruntergeladene Dateien.
- Die Ursache dafür ist, dass Privacy Browser den in Android eingebauten Download-Manager verwendet, der keine Proxy-Optionen hat.
- Benutzer, die auch Dateien über Orbot herunterladen möchten, müssen daher dessen VPN-Modus aktivieren.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
<p><img class="left" src="../shared_images/sort_selected_dark.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
- <p><img class="left" src="../shared_images/orbot_dark.png"> <code>orbot</code> is a modified version of
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
- which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
- The full text of the license is below. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/cookie_dark.png"> <code>cookie</code> was created by Google.
It is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>
and can be downloaded from <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>. It is unchanged except for layout information like color and size.</p>
<p><img class="icon" src="../shared_images/map_dark.png"> map.</p>
<p><img class="icon" src="../shared_images/more_dark.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_dark.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_dark.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_dark.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_dark.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_dark.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
<p><img class="left" src="../shared_images/sort_selected_light.png"> is derived from <code>sort</code>, which is part of the <a href="https://material.io/icons/">Android Material icon set</a>
and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>. Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
- <p><img class="left" src="../shared_images/orbot_light.png"> <code>orbot</code> is a modified version of
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">the status icon from the Orbot project</a>,
- which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>.
- The full text of the license is below. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
<p><img class="left" src="../shared_images/cookie_light.png"> <code>cookie</code> was created by Google.
It is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>
and can be downloaded from <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>. It is unchanged except for layout information like color and size.</p>
<p><img class="icon" src="../shared_images/map_light.png"> map.</p>
<p><img class="icon" src="../shared_images/more_light.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_light.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_light.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_light.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_light.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_light.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/dark_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+
+ <p>There are two general categories of bad actors that want to infringe on the privacy of the web:
+ malicious governments with access to ISPs (Internet Service Providers) and mega corporations that run social and advertising networks.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Malicious Governments</h3>
+
+ <p>Malicious governments often spy on their citizens to punish dissent or human rights activity.
+ They commonly either operate the local ISPs or they can force them to disclose information showing every IP address that is visited by each user.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Mega Corporations</h3>
+
+ <p>When a user connects to a web server, the web server can see the user’s IP address.
+ Although it isn’t a perfect science, IP addresses can be turned into physical addresses with a <a href="https://www.whatismyip.com/">fair amount of accuracy</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ But large mega corporations that own social media and advertising networks use a whole profile of information that is designed to track users across devices and IP addresses.
+ These profiles employ a variety of techniques to identify users, including JavaScript, cookies, tracking IDs, and <a href="https://panopticlick.eff.org/">browser fingerprinting</a>.
+ Because the vast majority of the websites on the internet either load an ad from one of the major networks or embed social media icons with their associated JavaScript,
+ these corporations have built profiles for almost every online user and can track their internet activity across unrelated sites.</p>
+
+ <p>They track every site that is visited, everything that is purchased, every credit card that is used to make a purchase, every address that items are shipped to,
+ and the GPS metadata of every picture that is uploaded to the internet.
+ They build a profile of a user’s age, gender, marital status, address, political affiliations, religious affiliations, family circumstances, number of pets,
+ and everything else they can get their hands on.
+ They even buy up databases of credit card transactions at local stores, so they can track the off-line purchasing patterns of the users in their profiles.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>The single best privacy protection against mega corporations is to browse the web with JavaScript disabled, followed by blocking ad networks, disabling cookies and DOM storage,
+ and using a browser that is difficult to fingerprint.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_dark.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Downloading Files Via Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/light_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+
+ <p>There are two general categories of bad actors that want to infringe on the privacy of the web:
+ malicious governments with access to ISPs (Internet Service Providers) and mega corporations that run social and advertising networks.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Malicious Governments</h3>
+
+ <p>Malicious governments often spy on their citizens to punish dissent or human rights activity.
+ They commonly either operate the local ISPs or they can force them to disclose information showing every IP address that is visited by each user.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Mega Corporations</h3>
+
+ <p>When a user connects to a web server, the web server can see the user’s IP address.
+ Although it isn’t a perfect science, IP addresses can be turned into physical addresses with a <a href="https://www.whatismyip.com/">fair amount of accuracy</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ But large mega corporations that own social media and advertising networks use a whole profile of information that is designed to track users across devices and IP addresses.
+ These profiles employ a variety of techniques to identify users, including JavaScript, cookies, tracking IDs, and <a href="https://panopticlick.eff.org/">browser fingerprinting</a>.
+ Because the vast majority of the websites on the internet either load an ad from one of the major networks or embed social media icons with their associated JavaScript,
+ these corporations have built profiles for almost every online user and can track their internet activity across unrelated sites.</p>
+
+ <p>They track every site that is visited, everything that is purchased, every credit card that is used to make a purchase, every address that items are shipped to,
+ and the GPS metadata of every picture that is uploaded to the internet.
+ They build a profile of a user’s age, gender, marital status, address, political affiliations, religious affiliations, family circumstances, number of pets,
+ and everything else they can get their hands on.
+ They even buy up databases of credit card transactions at local stores, so they can track the off-line purchasing patterns of the users in their profiles.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>The single best privacy protection against mega corporations is to browse the web with JavaScript disabled, followed by blocking ad networks, disabling cookies and DOM storage,
+ and using a browser that is difficult to fingerprint.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_light.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Downloading Files Via Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/dark_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Tor and Its Limits</h3>
-
- <p>There are two general categories of bad actors that want to infringe on the privacy of the web:
- malicious governments with access to ISPs (Internet Service Providers) and mega corporations that run social and advertising networks.
- TOR (The Onion Router) is useful in protecting privacy from malicious governments (which spy on traffic in transit) but not from mega corporations (which embed malicious code on web servers).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Malicious Governments</h3>
-
- <p>Malicious governments often spy on their citizens to punish dissent or human rights activity.
- They commonly either operate the local ISPs or they can force them to disclose information showing every IP address that is visited by each user.
- Tor is designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through three separate servers on the internet
- before sending it on to the final destination.
- This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address the user’s device</a> and the IP address of the final web server.
- Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using Tor.
- In some parts of the world, using Tor could be construed as an evidence of illegal behavior (“if you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
- and users could be punished because governments assume they are doing something that is prohibited. Thus, Tor can be helpful, but isn’t a panacea.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Mega Corporations</h3>
-
- <p>When a user connects to a web server, the web server can see the user’s IP address.
- Although it isn’t a perfect science, IP addresses can be turned into physical addresses with a <a href="https://www.whatismyip.com/">fair amount of accuracy</a>.
- Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Tor is a good solution to mask the user’s location from these servers.
- But large mega corporations that own social media and advertising networks use a whole profile of information that is designed to track users across devices and IP addresses.
- These profiles employ a variety of techniques to identify users, including JavaScript, cookies, tracking IDs, and <a href="https://panopticlick.eff.org/">browser fingerprinting</a>.
- Because the vast majority of the websites on the internet either load an ad from one of the major networks or embed social media icons with their associated JavaScript,
- these corporations have built profiles for almost every user online and can track their internet activity across unrelated sites.</p>
-
- <p>They track every site that is visited, everything that is purchased, every credit card that is used to make a purchase, every address that items are shipped to,
- and the GPS metadata of every picture that is uploaded to the internet.
- They build a profile of a user’s age, gender, marital status, address, political affiliations, religious affiliations, family circumstances, number of pets,
- and everything else they can get their hands on.
- They even buy up databases of credit card transactions at local stores, so they can track the off-line purchasing patterns of the users in their profiles.
- Because they already have much more accurate address information about a user than an IP address discloses, Tor provides no real privacy protection against mega corporations.</p>
-
- <p>The single best privacy protection against mega corporations is to browse the web with JavaScript disabled, followed by blocking ad networks, disabling cookies and DOM storage,
- and using a browser that is difficult to fingerprint.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_dark.png"> Using Tor</h3>
-
- <p>Despite its limitations, Tor can be useful in some circumstances.
- The Tor project has an app for Android called Orbot, which is available on <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- and everywhere else that Privacy Browser is distributed. Privacy Browser has a setting to use Orbot as a proxy.
- When this is turned on, Privacy Browser’s app bar will have a light blue background instead of the default light grey.
- When Privacy Browser’s Orbot proxy setting is enabled, internet access will not work unless Orbot is running and connected to Tor.
- Because traffic is being routed through several Tor nodes, using Tor is often much slower than connecting directly to the internet.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Downloading Files Via Tor</h3>
-
- <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the Tor network, but file downloads will not.
- This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn't have a proxy option.
- Users who want to download files via Orbot need to enable its VPN mode.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/light_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Tor and Its Limits</h3>
-
- <p>There are two general categories of bad actors that want to infringe on the privacy of the web:
- malicious governments with access to ISPs (Internet Service Providers) and mega corporations that run social and advertising networks.
- TOR (The Onion Router) is useful in protecting privacy from malicious governments (which spy on traffic in transit) but not from mega corporations (which embed malicious code on web servers).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Malicious Governments</h3>
-
- <p>Malicious governments often spy on their citizens to punish dissent or human rights activity.
- They commonly either operate the local ISPs or they can force them to disclose information showing every IP address that is visited by each user.
- Tor is designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through three separate servers on the internet
- before sending it on to the final destination.
- This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address the user’s device</a> and the IP address of the final web server.
- Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using Tor.
- In some parts of the world, using Tor could be construed as an evidence of illegal behavior (“if you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
- and users could be punished because governments assume they are doing something that is prohibited. Thus, Tor can be helpful, but isn’t a panacea.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Mega Corporations</h3>
-
- <p>When a user connects to a web server, the web server can see the user’s IP address.
- Although it isn’t a perfect science, IP addresses can be turned into physical addresses with a <a href="https://www.whatismyip.com/">fair amount of accuracy</a>.
- Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Tor is a good solution to mask the user’s location from these servers.
- But large mega corporations that own social media and advertising networks use a whole profile of information that is designed to track users across devices and IP addresses.
- These profiles employ a variety of techniques to identify users, including JavaScript, cookies, tracking IDs, and <a href="https://panopticlick.eff.org/">browser fingerprinting</a>.
- Because the vast majority of the websites on the internet either load an ad from one of the major networks or embed social media icons with their associated JavaScript,
- these corporations have built profiles for almost every user online and can track their internet activity across unrelated sites.</p>
-
- <p>They track every site that is visited, everything that is purchased, every credit card that is used to make a purchase, every address that items are shipped to,
- and the GPS metadata of every picture that is uploaded to the internet.
- They build a profile of a user’s age, gender, marital status, address, political affiliations, religious affiliations, family circumstances, number of pets,
- and everything else they can get their hands on.
- They even buy up databases of credit card transactions at local stores, so they can track the off-line purchasing patterns of the users in their profiles.
- Because they already have much more accurate address information about a user than an IP address discloses, Tor provides no real privacy protection against mega corporations.</p>
-
- <p>The single best privacy protection against mega corporations is to browse the web with JavaScript disabled, followed by blocking ad networks, disabling cookies and DOM storage,
- and using a browser that is difficult to fingerprint.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_light.png"> Using Tor</h3>
-
- <p>Despite its limitations, Tor can be useful in some circumstances.
- The Tor project has an app for Android called Orbot, which is available on <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- and everywhere else that Privacy Browser is distributed. Privacy Browser has a setting to use Orbot as a proxy.
- When this is turned on, Privacy Browser’s app bar will have a light blue background instead of the default light grey.
- When Privacy Browser’s Orbot proxy setting is enabled, internet access will not work unless Orbot is running and connected to Tor.
- Because traffic is being routed through several Tor nodes, using Tor is often much slower than connecting directly to the internet.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Downloading Files Via Tor</h3>
-
- <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the Tor network, but file downloads will not.
- This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn't have a proxy option.
- Users who want to download files via Orbot need to enable its VPN mode.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
<p><img class="left" src="../shared_images/sort_selected_dark.png"> deriva de <code>sort</code>, que es parte del <a href="https://material.io/icons/">conjunto de iconos Android Material</a>
y es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licencia Apache 2.0</a>. Copyright de modificaciones © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_dark.png"> <code>orbot</code> es una versión modificada del
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icono de estado del proyecto Orbot</a>,
- que tiene copyright 2009-2010 por Nathan Freitas, The Guardian Project.
- Es liberado bajo la <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">licencia BSD modificada (de 3 cláusulas)</a>.
- El texto completo de la licencia se encuentra debajo. Copyright de modificaciones © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_dark.png"> <code>cookie</code> fue creado por Google. Es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">licencia Apache 2.0</a>
y puede ser descargado desde <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>.
Está sin cambios, excepto por la información de diseño como el color y el tamaño.</p>
<p><img class="icon" src="../shared_images/map_dark.png"> map.</p>
<p><img class="icon" src="../shared_images/more_dark.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_dark.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_dark.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_dark.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_dark.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_dark.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>Licencia BSD modificada (de 3 cláusulas)</h3>
-
- <p>La redistribución y el uso en las formas de código fuente y binario, con o sin
- modificaciones, están permitidos siempre que se cumplan las siguientes condiciones:</p>
-
- <ul>
- <li>Las redistribuciones del código fuente deben conservar el aviso de copyright
- anterior, esta lista de condiciones y el siguiente descargo de responsabilidad.</li>
-
- <li>Las redistribuciones en formato binario deben reproducir el aviso de copyright
- anterior, esta lista de condiciones y el siguiente descargo de responsabilidad
- en la documentación y/u otros materiales suministrados con la distribución.</li>
-
- <li>Ni el nombre de los titulares de derechos de autor ni los nombres de sus
- colaboradores pueden usarse para apoyar o promocionar productos derivados de
- este software sin permiso específico previo y por escrito.</li>
- </ul>
-
- <p>ESTE SOFTWARE SE SUMINISTRA POR LOS PROPIETARIOS DEL COPYRIGHT Y COLABORADORES
- “COMO ESTÁ” Y CUALQUIER GARANTÍAS EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO
- LIMITADO A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN Y APTITUD PARA UN
- PROPÓSITO PARTICULAR SON RECHAZADAS. EN NINGÚN CASO LOS PROPIETARIOS DEL COPYRIGHT
- Y COLABORADORES SERÁN RESPONSABLES POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL,
- ESPECIAL, EJEMPLAR O COSECUENCIAL (INCLUYENDO, PERO NO LIMITADO A, LA ADQUISICIÓN
- O SUSTITUCIÓN DE BIENES O SERVICIOS; LA PÉRDIDA DE USO, DE DATOS O DE BENEFICIOS;
- O INTERRUPCIÓN DE LA ACTIVIDAD EMPRESARIAL) O POR CUALQUIER TEORÍA DE
- RESPONSABILIDAD, YA SEA POR CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO
- (INCLUYENDO NEGLIGENCIA O CUALQUIER OTRA CAUSA) QUE SURJA DE CUALQUIER MANERA DEL
- USO DE ESTE SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
<p><img class="left" src="../shared_images/sort_selected_light.png"> deriva de <code>sort</code>, que es parte del <a href="https://material.io/icons/">conjunto de iconos Android Material</a>
y es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licencia Apache 2.0</a>. Copyright de modificaciones © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_light.png"> <code>orbot</code> es una versión modificada del
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icono de estado del proyecto Orbot</a>,
- que tiene copyright 2009-2010 por Nathan Freitas, The Guardian Project.
- Es liberado bajo la <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">licencia BSD modificada (de 3 cláusulas)</a>.
- El texto completo de la licencia se encuentra debajo. Copyright de modificaciones © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- La imagen resultante se libera bajo la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licencia GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_light.png"> <code>cookie</code> fue creado por Google.
Es liberado bajo la <a href ="https://www.apache.org/licenses/LICENSE-2.0">licencia Apache 2.0</a>
y puede ser descargado desde <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>.
<p><img class="icon" src="../shared_images/map_light.png"> map.</p>
<p><img class="icon" src="../shared_images/more_light.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_light.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_light.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_light.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_light.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_light.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>Licencia BSD modificada (de 3 cláusulas)</h3>
-
- <p>La redistribución y el uso en las formas de código fuente y binario, con o sin
- modificaciones, están permitidos siempre que se cumplan las siguientes condiciones:</p>
-
- <ul>
- <li>Las redistribuciones del código fuente deben conservar el aviso de copyright
- anterior, esta lista de condiciones y el siguiente descargo de responsabilidad.</li>
-
- <li>Las redistribuciones en formato binario deben reproducir el aviso de copyright
- anterior, esta lista de condiciones y el siguiente descargo de responsabilidad
- en la documentación y/u otros materiales suministrados con la distribución.</li>
-
- <li>Ni el nombre de los titulares de derechos de autor ni los nombres de sus
- colaboradores pueden usarse para apoyar o promocionar productos derivados de
- este software sin permiso específico previo y por escrito.</li>
- </ul>
-
- <p>ESTE SOFTWARE SE SUMINISTRA POR LOS PROPIETARIOS DEL COPYRIGHT Y COLABORADORES
- “COMO ESTÁ” Y CUALQUIER GARANTÍAS EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO
- LIMITADO A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN Y APTITUD PARA UN
- PROPÓSITO PARTICULAR SON RECHAZADAS. EN NINGÚN CASO LOS PROPIETARIOS DEL COPYRIGHT
- Y COLABORADORES SERÁN RESPONSABLES POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL,
- ESPECIAL, EJEMPLAR O COSECUENCIAL (INCLUYENDO, PERO NO LIMITADO A, LA ADQUISICIÓN
- O SUSTITUCIÓN DE BIENES O SERVICIOS; LA PÉRDIDA DE USO, DE DATOS O DE BENEFICIOS;
- O INTERRUPCIÓN DE LA ACTIVIDAD EMPRESARIAL) O POR CUALQUIER TEORÍA DE
- RESPONSABILIDAD, YA SEA POR CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO
- (INCLUYENDO NEGLIGENCIA O CUALQUIER OTRA CAUSA) QUE SURJA DE CUALQUIER MANERA DEL
- USO DE ESTE SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2017,2019 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/dark_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+
+ <p>Existen dos categorías generales de malos actores que quieren infringir la privacidad de la web:
+ gobiernos maliciosos con acceso a ISPs (Proveedores de Servicios de Internet) y grandes corporaciones que ofrecen redes sociales y de publicidad.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Gobiernos maliciosos</h3>
+
+ <p>Los gobiernos maliciosos a menudo espían a sus ciudadanos para castigar la disidencia o la actividad de derechos humanos.
+ Normalmente suelen operar los ISPs locales o los fuerzan a revelar información mostrando cada dirección IP que visita cada usuario.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Grandes corporaciones</h3>
+
+ <p>Cuando un usuario se conecta a un servidor web, éste puede ver la dirección IP del usuario.
+ Aunque esto no es una ciencia perfecta, las direcciones IP se pueden convertir a direcciones físicas con <a href="https://www.whatismyip.com/">bastante precisión</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Pero las más grandes corporaciones que poseen medios sociales y redes de publicidad usan un perfil completo de información diseñado
+ para rastrear a los usuarios a través de los dispositivos y direcciones IP.
+ Estos perfiles emplean una variedad de técnicas para identificar a los usuarios, incluyendo Javascript, cookies, IDs de seguimiento,
+ y <a href="https://panopticlick.eff.org/">huellas del navegador</a>.
+ Debido a que la gran mayoría de páginas web en internet, o cargan un anuncio de una de las principales redes, o integran iconos de medios sociales con su Javascript asociado,
+ estas corporaciones han creado perfiles para casi todos los usuarios en línea y pueden rastrear su actividad en internet a través de sitios que no están relacionados.</p>
+
+ <p>Ellos rastrean cada sitio web visitado, todo lo que se compra, cada tarjeta de crédito que es usada para realizar una compra, cada dirección a la que se envían los artículos,
+ y los metadatos GPS de cada imágen que se sube a internet.
+ Construyen un perfil de la edad del usuario, género, estado civil, dirección, afiliaciones políticas, afiliaciones religiosas, circunstancias familiares, número de mascotas,
+ y cualquier otra cosa que caiga en sus manos.
+ Incluso compran bases de datos de transacciones con tarjeta de crédito en tiendas locales,
+ para así poder rastrear de los usuarios en sus perfiles los patrones de compra que hacen cuando no están conectados.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>La única mejor protección de la privacidad contra las grandes corporaciones es navegar por la web con Javascript deshabilitado, seguido de bloquear redes publicitarias,
+ inhabilitar cookies y almacenamiento DOM, y usar un navegador del que sea difícil recoger huellas.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_dark.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Descarga de archivos a través de Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2017,2019 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/light_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+
+ <p>Existen dos categorías generales de malos actores que quieren infringir la privacidad de la web:
+ gobiernos maliciosos con acceso a ISPs (Proveedores de Servicios de Internet) y grandes corporaciones que ofrecen redes sociales y de publicidad.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Gobiernos maliciosos</h3>
+
+ <p>Los gobiernos maliciosos a menudo espían a sus ciudadanos para castigar la disidencia o la actividad de derechos humanos.
+ Normalmente suelen operar los ISPs locales o los fuerzan a revelar información mostrando cada dirección IP que visita cada usuario.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Grandes corporaciones</h3>
+
+ <p>Cuando un usuario se conecta a un servidor web, éste puede ver la dirección IP del usuario.
+ Aunque esto no es una ciencia perfecta, las direcciones IP se pueden convertir a direcciones físicas con <a href="https://www.whatismyip.com/">bastante precisión</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Pero las más grandes corporaciones que poseen medios sociales y redes de publicidad usan un perfil completo de información diseñado
+ para rastrear a los usuarios a través de los dispositivos y direcciones IP.
+ Estos perfiles emplean una variedad de técnicas para identificar a los usuarios, incluyendo Javascript, cookies, IDs de seguimiento,
+ y <a href="https://panopticlick.eff.org/">huellas del navegador</a>.
+ Debido a que la gran mayoría de páginas web en internet, o cargan un anuncio de una de las principales redes, o integran iconos de medios sociales con su Javascript asociado,
+ estas corporaciones han creado perfiles para casi todos los usuarios en línea y pueden rastrear su actividad en internet a través de sitios que no están relacionados.</p>
+
+ <p>Ellos rastrean cada sitio web visitado, todo lo que se compra, cada tarjeta de crédito que es usada para realizar una compra, cada dirección a la que se envían los artículos,
+ y los metadatos GPS de cada imágen que se sube a internet.
+ Construyen un perfil de la edad del usuario, género, estado civil, dirección, afiliaciones políticas, afiliaciones religiosas, circunstancias familiares, número de mascotas,
+ y cualquier otra cosa que caiga en sus manos.
+ Incluso compran bases de datos de transacciones con tarjeta de crédito en tiendas locales,
+ para así poder rastrear de los usuarios en sus perfiles los patrones de compra que hacen cuando no están conectados.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>La única mejor protección de la privacidad contra las grandes corporaciones es navegar por la web con Javascript deshabilitado, seguido de bloquear redes publicitarias,
+ inhabilitar cookies y almacenamiento DOM, y usar un navegador del que sea difícil recoger huellas.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_light.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Descarga de archivos a través de Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2017 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/dark_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Tor y sus límites</h3>
-
- <p>Existen dos categorías generales de malos actores que quieren infringir la privacidad de la web:
- gobiernos maliciosos con acceso a ISPs (Proveedores de Servicios de Internet) y grandes corporaciones que ofrecen redes sociales y de publicidad.
- TOR (El Enrutador de Cebolla) es útil en proteger la privacidad de gobiernos maliciosos (que espían el tráfico en tránsito) pero no de grandes corporaciones
- (que incrustan código malicioso en los servidores web).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Gobiernos maliciosos</h3>
-
- <p>Los gobiernos maliciosos a menudo espían a sus ciudadanos para castigar la disidencia o la actividad de derechos humanos.
- Normalmente suelen operar los ISPs locales o los fuerzan a revelar información mostrando cada dirección IP que visita cada usuario.
- Tor está diseñado para vencer esta infracción de privacidad encriptando el tráfico del dispositivo de un usuario,
- enrutándolo a través de tres servidores separados en internet antes de enviarlo al destino final.
- Esto significa que ningún ISP local, servidor o página web pueden, a la vez, conocer la dirección IP del dispositivo del usuario y la dirección IP del servidor web final.
- Los gobiernos maliciosos y los ISPs que ellos controlan no pueden decir a qué servidores web está accediendo un determinado usuario, aunque pueden decir que ese usuario está usando Tor.
- En algunas partes del mundo, usar Tor podría interpretarse como una prueba de conducta ilegal (“si no tuvieras nada que esconder no estarías encriptando tu tráfico”)
- y los usuarios podrían ser castigados porque los gobiernos asumen que están haciendo algo prohibido. Por tanto, Tor puede ser útil, pero no es la panacea.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Grandes corporaciones</h3>
-
- <p>Cuando un usuario se conecta a un servidor web, éste puede ver la dirección IP del usuario.
- Aunque esto no es una ciencia perfecta, las direcciones IP se pueden convertir a direcciones físicas con <a href="https://www.whatismyip.com/">bastante precisión</a>.
- Los pequeños servidores web normalmente se basan en las direcciones IP para identificar la ubicación de los usuarios que visitan su web.
- Tor es una buena solución para ocultar la ubicación del usuario de estos servidores.
- Pero las más grandes corporaciones que poseen medios sociales y redes de publicidad usan un perfil completo de información diseñado
- para rastrear a los usuarios a través de los dispositivos y direcciones IP.
- Estos perfiles emplean una variedad de técnicas para identificar a los usuarios, incluyendo Javascript, cookies, IDs de seguimiento,
- y <a href="https://panopticlick.eff.org/">huellas del navegador</a>.
- Debido a que la gran mayoría de páginas web en internet, o cargan un anuncio de una de las principales redes, o integran iconos de medios sociales con su Javascript asociado,
- estas corporaciones han creado perfiles para casi todos los usuarios en línea y pueden rastrear su actividad en internet a través de sitios que no están relacionados.</p>
-
- <p>Ellos rastrean cada sitio web visitado, todo lo que se compra, cada tarjeta de crédito que es usada para realizar una compra, cada dirección a la que se envían los artículos,
- y los metadatos GPS de cada imágen que se sube a internet.
- Construyen un perfil de la edad del usuario, género, estado civil, dirección, afiliaciones políticas, afiliaciones religiosas, circunstancias familiares, número de mascotas,
- y cualquier otra cosa que caiga en sus manos.
- Incluso compran bases de datos de transacciones con tarjeta de crédito en tiendas locales,
- para así poder rastrear de los usuarios en sus perfiles los patrones de compra que hacen cuando no están conectados.
- Debido a que ya tienen información de dirección mucho más precisa sobre un usuario que lo que pueda revelar una dirección IP,
- Tor no ofrece una verdadera protección de la privacidad contra las grandes corporaciones.</p>
-
- <p>La única mejor protección de la privacidad contra las grandes corporaciones es navegar por la web con Javascript deshabilitado, seguido de bloquear redes publicitarias,
- inhabilitar cookies y almacenamiento DOM, y usar un navegador del que sea difícil recoger huellas.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_dark.png"> Usando Tor</h3>
-
- <p>A pesar de sus limitaciones, Tor puede ser útil en algunas circunstancias.
- El proyecto Tor tiene una app para Android llamada Orbot, que está disponible en F-Droid y en todos los sitios donde se distribuye Navegador Privado.
- Navegador Privado tiene un ajuste para usar Orbot como un proxy. Cuando se enciende, la barra de aplicaciones de Navegador Privado tendrá un fondo azul claro en lugar del gris claro por defecto.
- Cuando el ajuste proxy Orbot de Navegador Privado está habilitado, el acceso a internet no funcionará a menos que se esté ejecutando Orbot y esté conectado a Tor.
- Ya que el tráfico se está enrutando a través de varios nodos Tor, usar Tor es a menudo mucho más lento que conectar directamente a internet.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Descarga de archivos a través de Tor</h3>
-
- <p>Cuando Orbot está operando en modo proxy, navegar por Internet usando Navegador Privado será enrutado a través de la red Tor, pero no en el caso de las descargas de archivos.
- Esto es debido a que Navegador Privado utiliza el gestor de descargas integrado de Android para descargar archivos, que no tiene una opción de proxy.
- Los usuarios que quieran descargar archivos a través de Orbot necesitan habilitar su modo VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2017 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/light_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Tor y sus límites</h3>
-
- <p>Existen dos categorías generales de malos actores que quieren infringir la privacidad de la web:
- gobiernos maliciosos con acceso a ISPs (Proveedores de Servicios de Internet) y grandes corporaciones que ofrecen redes sociales y de publicidad.
- TOR (El Enrutador de Cebolla) es útil en proteger la privacidad de gobiernos maliciosos (que espían el tráfico en tránsito) pero no de grandes corporaciones
- (que incrustan código malicioso en los servidores web).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Gobiernos maliciosos</h3>
-
- <p>Los gobiernos maliciosos a menudo espían a sus ciudadanos para castigar la disidencia o la actividad de derechos humanos.
- Normalmente suelen operar los ISPs locales o los fuerzan a revelar información mostrando cada dirección IP que visita cada usuario.
- Tor está diseñado para vencer esta infracción de privacidad encriptando el tráfico del dispositivo de un usuario,
- enrutándolo a través de tres servidores separados en internet antes de enviarlo al destino final.
- Esto significa que ningún ISP local, servidor o página web pueden, a la vez, conocer la dirección IP del dispositivo del usuario y la dirección IP del servidor web final.
- Los gobiernos maliciosos y los ISPs que ellos controlan no pueden decir a qué servidores web está accediendo un determinado usuario, aunque pueden decir que ese usuario está usando Tor.
- En algunas partes del mundo, usar Tor podría interpretarse como una prueba de conducta ilegal (“si no tuvieras nada que esconder no estarías encriptando tu tráfico”)
- y los usuarios podrían ser castigados porque los gobiernos asumen que están haciendo algo prohibido. Por tanto, Tor puede ser útil, pero no es la panacea.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Grandes corporaciones</h3>
-
- <p>Cuando un usuario se conecta a un servidor web, éste puede ver la dirección IP del usuario.
- Aunque esto no es una ciencia perfecta, las direcciones IP se pueden convertir a direcciones físicas con <a href="https://www.whatismyip.com/">bastante precisión</a>.
- Los pequeños servidores web normalmente se basan en las direcciones IP para identificar la ubicación de los usuarios que visitan su web.
- Tor es una buena solución para ocultar la ubicación del usuario de estos servidores.
- Pero las más grandes corporaciones que poseen medios sociales y redes de publicidad usan un perfil completo de información diseñado
- para rastrear a los usuarios a través de los dispositivos y direcciones IP.
- Estos perfiles emplean una variedad de técnicas para identificar a los usuarios, incluyendo Javascript, cookies, IDs de seguimiento,
- y <a href="https://panopticlick.eff.org/">huellas del navegador</a>.
- Debido a que la gran mayoría de páginas web en internet, o cargan un anuncio de una de las principales redes, o integran iconos de medios sociales con su Javascript asociado,
- estas corporaciones han creado perfiles para casi todos los usuarios en línea y pueden rastrear su actividad en internet a través de sitios que no están relacionados.</p>
-
- <p>Ellos rastrean cada sitio web visitado, todo lo que se compra, cada tarjeta de crédito que es usada para realizar una compra, cada dirección a la que se envían los artículos,
- y los metadatos GPS de cada imágen que se sube a internet.
- Construyen un perfil de la edad del usuario, género, estado civil, dirección, afiliaciones políticas, afiliaciones religiosas, circunstancias familiares, número de mascotas,
- y cualquier otra cosa que caiga en sus manos.
- Incluso compran bases de datos de transacciones con tarjeta de crédito en tiendas locales,
- para así poder rastrear de los usuarios en sus perfiles los patrones de compra que hacen cuando no están conectados.
- Debido a que ya tienen información de dirección mucho más precisa sobre un usuario que lo que pueda revelar una dirección IP,
- Tor no ofrece una verdadera protección de la privacidad contra las grandes corporaciones.</p>
-
- <p>La única mejor protección de la privacidad contra las grandes corporaciones es navegar por la web con Javascript deshabilitado, seguido de bloquear redes publicitarias,
- inhabilitar cookies y almacenamiento DOM, y usar un navegador del que sea difícil recoger huellas.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_light.png"> Usando Tor</h3>
-
- <p>A pesar de sus limitaciones, Tor puede ser útil en algunas circunstancias.
- El proyecto Tor tiene una app para Android llamada Orbot, que está disponible en F-Droid y en todos los sitios donde se distribuye Navegador Privado.
- Navegador Privado tiene un ajuste para usar Orbot como un proxy. Cuando se enciende, la barra de aplicaciones de Navegador Privado tendrá un fondo azul claro en lugar del gris claro por defecto.
- Cuando el ajuste proxy Orbot de Navegador Privado está habilitado, el acceso a internet no funcionará a menos que se esté ejecutando Orbot y esté conectado a Tor.
- Ya que el tráfico se está enrutando a través de varios nodos Tor, usar Tor es a menudo mucho más lento que conectar directamente a internet.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Descarga de archivos a través de Tor</h3>
-
- <p>Cuando Orbot está operando en modo proxy, navegar por Internet usando Navegador Privado será enrutado a través de la red Tor, pero no en el caso de las descargas de archivos.
- Esto es debido a que Navegador Privado utiliza el gestor de descargas integrado de Android para descargar archivos, que no tiene una opción de proxy.
- Los usuarios que quieran descargar archivos a través de Orbot necesitan habilitar su modo VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
qui fait partie de <a href="https://material.io/icons/">l'ensemble d'icônes Matériel Android</a> et sont publiés sous <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licence Apache 2.0</a>.
Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
L'image résultante est publiée sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_dark.png"> <code>orbot</code> est une version modifiée de
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">l'icône de statut du projet Orbot</a>,
- qui est copyright 2009-2010 de Nathan Freitas, The Guardian Project. Elle est publiée sous la <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">licence BSD à 3 clauses</a>.
- Le texte complet de la licence est ci-dessous. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- L'image résultante est publiée sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_dark.png"> <code>cookie</code> a été créé par Google.
Il est publié sous la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licence Apache 2.0</a>
et peut être téléchargé à partir des <a href="https://materialdesignicons.com/icon/cookie">Icônes Material Design</a>.
<p><img class="icon" src="../shared_images/map_dark.png"> map.</p>
<p><img class="icon" src="../shared_images/more_dark.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_dark.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_dark.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_dark.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_dark.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_dark.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
qui fait partie de <a href="https://material.io/icons/">l'ensemble d'icônes Matériel Android</a> et sont publiés sous <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licence Apache 2.0</a>.
Modifications copyright © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
L'image résultante est publiée sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_light.png"> <code>orbot</code> est une version modifiée de
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">l'icône de statut du projet Orbot</a>,
- qui est copyright 2009-2010 de Nathan Freitas, The Guardian Project. Elle est publiée sous la <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">licence BSD à 3 clauses</a>.
- Le texte complet de la licence est ci-dessous. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- L'image résultante est publiée sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_light.png"> <code>cookie</code> a été créé par Google.
Il est publié sous la <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licence Apache 2.0</a>
et peut être téléchargé à partir des <a href="https://materialdesignicons.com/icon/cookie">Icônes Material Design</a>.
<p><img class="icon" src="../shared_images/map_light.png"> map.</p>
<p><img class="icon" src="../shared_images/more_light.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_light.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_light.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_light.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_light.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_light.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/dark_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+
+ <p>Il existe deux catégories générales de mauvais acteurs qui veulent porter atteinte à la vie privée du Web:
+ des gouvernements malveillants ayant accès à des fournisseurs de services Internet (FAI) et des méga entreprises exploitant des réseaux sociaux et publicitaires.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Gouvernements Malicieux</h3>
+
+ <p>Les gouvernements malveillants espionnent souvent leurs citoyens pour punir la dissidence ou les activités liées aux droits de l'homme.
+ Ils exploitent généralement les FAI locaux ou peuvent les obliger à divulguer des informations indiquant chaque adresse IP visitée par chaque utilisateur.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Méga entreprises</h3>
+
+ <p>Lorsqu'un utilisateur se connecte à un serveur Web, celui-ci peut voir l'adresse IP de l'utilisateur.
+ Bien que ce ne soit pas une science parfaite, les adresses IP peuvent être transformées en adresses physiques avec une <a href="https://www.whatismyip.com/">juste précision</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Mais les grandes méga-entreprises propriétaires de réseaux de médias sociaux et de publicité utilisent tout un profil d'informations
+ conçu pour suivre les utilisateurs sur des appareils et des adresses IP.
+ Ces profils utilisent diverses techniques pour identifier les utilisateurs, notamment JavaScript, les cookies, les identifiants de suivi et les
+ <a href="https://panopticlick.eff.org/">empreintes digitales du navigateur</a>.
+ Parce que la grande majorité des sites Web sur Internet téléchargent une annonce publicitaire sur l'un des principaux réseaux ou intègrent
+ des icônes de réseaux sociaux avec leur code JavaScript associé,
+ ces sociétés ont créé des profils pour presque tous les utilisateurs en ligne et peuvent suivre leur activité Internet sur des sites indépendants.</p>
+
+ <p>Ils suivent chaque site visité, tout ce qui est acheté, chaque carte de crédit utilisée pour effectuer un achat, chaque adresse à laquelle les articles sont expédiés,
+ et les métadonnées GPS de chaque image téléchargée sur Internet.
+ Ils établissent un profil de l'âge, du sexe, de l'état matrimonial, de l'adresse, des affiliations politiques, des appartenances religieuses, de la situation de famille,
+ du nombre d'animaux de compagnie, et tout ce qu'ils peuvent mettre la main dessus.
+ Ils achètent même des bases de données de transactions par carte de crédit dans les magasins locaux, afin de pouvoir suivre les habitudes d'achat hors ligne des utilisateurs dans leurs profils.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>La meilleure protection contre la confidentialité des grandes entreprises consiste à naviguer sur le Web avec JavaScript désactivé, le suivi du blocage des réseaux publicitaires,
+ la désactivation des cookies et du stockage du DOM et en utilisant un navigateur difficile à identifier.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_dark.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Téléchargement de fichiers via Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/light_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+
+ <p>Il existe deux catégories générales de mauvais acteurs qui veulent porter atteinte à la vie privée du Web:
+ des gouvernements malveillants ayant accès à des fournisseurs de services Internet (FAI) et des méga entreprises exploitant des réseaux sociaux et publicitaires.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Gouvernements Malicieux</h3>
+
+ <p>Les gouvernements malveillants espionnent souvent leurs citoyens pour punir la dissidence ou les activités liées aux droits de l'homme.
+ Ils exploitent généralement les FAI locaux ou peuvent les obliger à divulguer des informations indiquant chaque adresse IP visitée par chaque utilisateur.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Méga entreprises</h3>
+
+ <p>Lorsqu'un utilisateur se connecte à un serveur Web, celui-ci peut voir l'adresse IP de l'utilisateur.
+ Bien que ce ne soit pas une science parfaite, les adresses IP peuvent être transformées en adresses physiques avec une <a href="https://www.whatismyip.com/">juste précision</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Mais les grandes méga-entreprises propriétaires de réseaux de médias sociaux et de publicité utilisent tout un profil d'informations
+ conçu pour suivre les utilisateurs sur des appareils et des adresses IP.
+ Ces profils utilisent diverses techniques pour identifier les utilisateurs, notamment JavaScript, les cookies, les identifiants de suivi et les
+ <a href="https://panopticlick.eff.org/">empreintes digitales du navigateur</a>.
+ Parce que la grande majorité des sites Web sur Internet téléchargent une annonce publicitaire sur l'un des principaux réseaux ou intègrent
+ des icônes de réseaux sociaux avec leur code JavaScript associé,
+ ces sociétés ont créé des profils pour presque tous les utilisateurs en ligne et peuvent suivre leur activité Internet sur des sites indépendants.</p>
+
+ <p>Ils suivent chaque site visité, tout ce qui est acheté, chaque carte de crédit utilisée pour effectuer un achat, chaque adresse à laquelle les articles sont expédiés,
+ et les métadonnées GPS de chaque image téléchargée sur Internet.
+ Ils établissent un profil de l'âge, du sexe, de l'état matrimonial, de l'adresse, des affiliations politiques, des appartenances religieuses, de la situation de famille,
+ du nombre d'animaux de compagnie, et tout ce qu'ils peuvent mettre la main dessus.
+ Ils achètent même des bases de données de transactions par carte de crédit dans les magasins locaux, afin de pouvoir suivre les habitudes d'achat hors ligne des utilisateurs dans leurs profils.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>La meilleure protection contre la confidentialité des grandes entreprises consiste à naviguer sur le Web avec JavaScript désactivé, le suivi du blocage des réseaux publicitaires,
+ la désactivation des cookies et du stockage du DOM et en utilisant un navigateur difficile à identifier.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_light.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Téléchargement de fichiers via Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/dark_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Tor et ses limites</h3>
-
- <p>Il existe deux catégories générales de mauvais acteurs qui veulent porter atteinte à la vie privée du Web:
- des gouvernements malveillants ayant accès à des fournisseurs de services Internet (FAI) et des méga entreprises exploitant des réseaux sociaux et publicitaires.
- TOR (The Onion Router) est utile pour protéger la vie
- privée envers des gouvernements malveillants (qui espionnent le trafic en transit), mais pas des méga-entreprises (qui intègrent du code malveillant sur les serveurs Web).</p>
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Gouvernements Malicieux</h3>
-
- <p>Les gouvernements malveillants espionnent souvent leurs citoyens pour punir la dissidence ou les activités liées aux droits de l'homme.
- Ils exploitent généralement les FAI locaux ou peuvent les obliger à divulguer des informations indiquant chaque adresse IP visitée par chaque utilisateur.
- Tor est conçu pour mettre fin à cette atteinte à la vie privée en chiffrant le trafic depuis le périphérique d'un utilisateur et en le routant via trois serveurs distincts sur Internet.
- avant de l'envoyer à la destination finale.
- Cela signifie qu'aucun fournisseur de services Internet, serveur ou site Web ne peut connaître à la fois l'adresse <a href="https://ipleak.net">et le périphérique de l'utilisateur</a>
- et l'adresse IP du serveur Web final.
- Les gouvernements malveillants et les fournisseurs de services Internet qu'ils contrôlent ne peuvent pas déterminer les serveurs Web auxquels un utilisateur a accès,
- bien qu'ils puissent dire que l'utilisateur utilise Tor.
- Dans certaines régions du monde, l'utilisation de Tor pourrait être interprétée comme une preuve de comportement illégal («si vous n'aviez rien à cacher, vous ne crypteriez pas votre trafic»).
- et les utilisateurs pourraient être punis parce que les gouvernements supposent qu'ils font quelque chose d'interdit. Ainsi, Tor peut être utile, mais n'est pas une panacée.</p>
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Méga entreprises</h3>
-
- <p>Lorsqu'un utilisateur se connecte à un serveur Web, celui-ci peut voir l'adresse IP de l'utilisateur.
- Bien que ce ne soit pas une science parfaite, les adresses IP peuvent être transformées en adresses physiques avec une <a href="https://www.whatismyip.com/">juste précision</a>.
- Les petits serveurs Web dépendent généralement des adresses IP pour identifier l'emplacement des utilisateurs visitant leur site.
- Tor est une bonne solution pour masquer l'emplacement de l'utilisateur de ces serveurs.
- Mais les grandes méga-entreprises propriétaires de réseaux de médias sociaux et de publicité utilisent tout un profil d'informations
- conçu pour suivre les utilisateurs sur des appareils et des adresses IP.
- Ces profils utilisent diverses techniques pour identifier les utilisateurs, notamment JavaScript, les cookies, les identifiants de suivi et les
- <a href="https://panopticlick.eff.org/">empreintes digitales du navigateur</a>.
- Parce que la grande majorité des sites Web sur Internet téléchargent une annonce publicitaire sur l'un des principaux réseaux ou intègrent
- des icônes de réseaux sociaux avec leur code JavaScript associé,
- ces sociétés ont créé des profils pour presque tous les utilisateurs en ligne et peuvent suivre leur activité Internet sur des sites indépendants.</p>
-
- <p>Ils suivent chaque site visité, tout ce qui est acheté, chaque carte de crédit utilisée pour effectuer un achat, chaque adresse à laquelle les articles sont expédiés,
- et les métadonnées GPS de chaque image téléchargée sur Internet.
- Ils établissent un profil de l'âge, du sexe, de l'état matrimonial, de l'adresse, des affiliations politiques, des appartenances religieuses, de la situation de famille,
- du nombre d'animaux de compagnie, et tout ce qu'ils peuvent mettre la main dessus.
- Ils achètent même des bases de données de transactions par carte de crédit dans les magasins locaux, afin de pouvoir suivre les habitudes d'achat hors ligne des utilisateurs dans leurs profils.
- Comme ils disposent déjà d'informations beaucoup plus précises sur l'adresse d'un utilisateur que ne le révèle une adresse IP,
- Tor ne fournit aucune protection réelle de la confidentialité contre les méga entreprises.</p>
-
- <p>La meilleure protection contre la confidentialité des grandes entreprises consiste à naviguer sur le Web avec JavaScript désactivé, le suivi du blocage des réseaux publicitaires,
- la désactivation des cookies et du stockage du DOM et en utilisant un navigateur difficile à identifier.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_dark.png"> Utilisation de Tor</h3>
-
- <p>Malgré ses limites, Tor peut être utile dans certaines circonstances.
- Le projet Tor propose une application pour Android appelée Orbot, disponible sur <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- et partout ailleurs où Privacy Browser est distribué. Privacy Browser a été configuré pour utiliser Orbot en tant que proxy.
- Lorsque cette option est activée, la barre d'applications de Privacy Browser aura un arrière-plan bleu clair au lieu du gris clair par défaut.
- Lorsque le paramètre proxy Orbot de Privacy Browser est activé, l'accès Internet ne fonctionnera que si Orbot est en cours d'exécution et connecté à Tor.
- Le trafic étant acheminé via plusieurs nœuds Tor, son utilisation est souvent beaucoup plus lente que la connexion directe à Internet.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Téléchargement de fichiers via Tor</h3>
-
- <p>Lorsque Orbot fonctionne en mode proxy, la navigation sur Internet à l'aide de Privacy Browser sera acheminée via le réseau Tor, mais pas les téléchargements de fichiers.
- En effet, Privacy Browser utilise le gestionnaire de téléchargement intégré d'Android pour télécharger des fichiers, qui ne disposent pas d'une option de proxy.
- Les utilisateurs souhaitant télécharger des fichiers via Orbot doivent activer le mode VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/light_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Tor et ses limites</h3>
-
- <p>Il existe deux catégories générales de mauvais acteurs qui veulent porter atteinte à la vie privée du Web:
- des gouvernements malveillants ayant accès à des fournisseurs de services Internet (FAI) et des méga entreprises exploitant des réseaux sociaux et publicitaires.
- TOR (The Onion Router) est utile pour protéger la vie
- privée envers des gouvernements malveillants (qui espionnent le trafic en transit), mais pas des méga-entreprises (qui intègrent du code malveillant sur les serveurs Web).</p>
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Gouvernements Malicieux</h3>
-
- <p>Les gouvernements malveillants espionnent souvent leurs citoyens pour punir la dissidence ou les activités liées aux droits de l'homme.
- Ils exploitent généralement les FAI locaux ou peuvent les obliger à divulguer des informations indiquant chaque adresse IP visitée par chaque utilisateur.
- Tor est conçu pour mettre fin à cette atteinte à la vie privée en chiffrant le trafic depuis le périphérique d'un utilisateur et en le routant via trois serveurs distincts sur Internet.
- avant de l'envoyer à la destination finale.
- Cela signifie qu'aucun fournisseur de services Internet, serveur ou site Web ne peut connaître à la fois l'adresse <a href="https://ipleak.net">et le périphérique de l'utilisateur</a>
- et l'adresse IP du serveur Web final.
- Les gouvernements malveillants et les fournisseurs de services Internet qu'ils contrôlent ne peuvent pas déterminer les serveurs Web auxquels un utilisateur a accès,
- bien qu'ils puissent dire que l'utilisateur utilise Tor.
- Dans certaines régions du monde, l'utilisation de Tor pourrait être interprétée comme une preuve de comportement illégal («si vous n'aviez rien à cacher, vous ne crypteriez pas votre trafic»).
- et les utilisateurs pourraient être punis parce que les gouvernements supposent qu'ils font quelque chose d'interdit. Ainsi, Tor peut être utile, mais n'est pas une panacée.</p>
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Méga entreprises</h3>
-
- <p>Lorsqu'un utilisateur se connecte à un serveur Web, celui-ci peut voir l'adresse IP de l'utilisateur.
- Bien que ce ne soit pas une science parfaite, les adresses IP peuvent être transformées en adresses physiques avec une <a href="https://www.whatismyip.com/">juste précision</a>.
- Les petits serveurs Web dépendent généralement des adresses IP pour identifier l'emplacement des utilisateurs visitant leur site.
- Tor est une bonne solution pour masquer l'emplacement de l'utilisateur de ces serveurs.
- Mais les grandes méga-entreprises propriétaires de réseaux de médias sociaux et de publicité utilisent tout un profil d'informations
- conçu pour suivre les utilisateurs sur des appareils et des adresses IP.
- Ces profils utilisent diverses techniques pour identifier les utilisateurs, notamment JavaScript, les cookies, les identifiants de suivi et les
- <a href="https://panopticlick.eff.org/">empreintes digitales du navigateur</a>.
- Parce que la grande majorité des sites Web sur Internet téléchargent une annonce publicitaire sur l'un des principaux réseaux ou intègrent
- des icônes de réseaux sociaux avec leur code JavaScript associé,
- ces sociétés ont créé des profils pour presque tous les utilisateurs en ligne et peuvent suivre leur activité Internet sur des sites indépendants.</p>
-
- <p>Ils suivent chaque site visité, tout ce qui est acheté, chaque carte de crédit utilisée pour effectuer un achat, chaque adresse à laquelle les articles sont expédiés,
- et les métadonnées GPS de chaque image téléchargée sur Internet.
- Ils établissent un profil de l'âge, du sexe, de l'état matrimonial, de l'adresse, des affiliations politiques, des appartenances religieuses, de la situation de famille,
- du nombre d'animaux de compagnie, et tout ce qu'ils peuvent mettre la main dessus.
- Ils achètent même des bases de données de transactions par carte de crédit dans les magasins locaux, afin de pouvoir suivre les habitudes d'achat hors ligne des utilisateurs dans leurs profils.
- Comme ils disposent déjà d'informations beaucoup plus précises sur l'adresse d'un utilisateur que ne le révèle une adresse IP,
- Tor ne fournit aucune protection réelle de la confidentialité contre les méga entreprises.</p>
-
- <p>La meilleure protection contre la confidentialité des grandes entreprises consiste à naviguer sur le Web avec JavaScript désactivé, le suivi du blocage des réseaux publicitaires,
- la désactivation des cookies et du stockage du DOM et en utilisant un navigateur difficile à identifier.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_light.png"> Utilisation de Tor</h3>
-
- <p>Malgré ses limites, Tor peut être utile dans certaines circonstances.
- Le projet Tor propose une application pour Android appelée Orbot, disponible sur <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- et partout ailleurs où Privacy Browser est distribué. Privacy Browser a été configuré pour utiliser Orbot en tant que proxy.
- Lorsque cette option est activée, la barre d'applications de Privacy Browser aura un arrière-plan bleu clair au lieu du gris clair par défaut.
- Lorsque le paramètre proxy Orbot de Privacy Browser est activé, l'accès Internet ne fonctionnera que si Orbot est en cours d'exécution et connecté à Tor.
- Le trafic étant acheminé via plusieurs nœuds Tor, son utilisation est souvent beaucoup plus lente que la connexion directe à Internet.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Téléchargement de fichiers via Tor</h3>
-
- <p>Lorsque Orbot fonctionne en mode proxy, la navigation sur Internet à l'aide de Privacy Browser sera acheminée via le réseau Tor, mais pas les téléchargements de fichiers.
- En effet, Privacy Browser utilise le gestionnaire de téléchargement intégré d'Android pour télécharger des fichiers, qui ne disposent pas d'une option de proxy.
- Les utilisateurs souhaitant télécharger des fichiers via Orbot doivent activer le mode VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
che fa parte dell'<a href="https://material.io/icons/">Android Material icon set</a> ed è stata rilasciata sotto <a href="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>.
Copyright delle modifiche © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_dark.png"> <code>orbot</code> è una versione modificata della
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icona di stato del progetto Orbot</a>,
- il cui copyright è 2009-2010 Nathan Freitas, The Guardian Project.
- E' rilasciata sotto <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>. Il testo completo della Licenza è riportato di seguito.
- Copyright delle modifiche © 2017<a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_dark.png"> <code>cookie</code> è stata creata da Google.
E' stata rilasciata con <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>
e può essere scaricata dirattamente dal <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>. Non è stata modificata ad eccezione del colore e della dimensione.</p>
<p><img class="icon" src="../shared_images/map_dark.png"> map.</p>
<p><img class="icon" src="../shared_images/more_dark.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_dark.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_dark.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_dark.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_dark.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_dark.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
che fa parte dell'<a href="https://material.io/icons/">Android Material icon set</a> ed è stata rilasciata sotto <a href="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>.
Copyright delle modifiche © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_light.png"> <code>orbot</code> è una versione modificata della
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icona di stato del progetto Orbot</a>,
- il cui copyright è 2009-2010 Nathan Freitas, The Guardian Project.
- E' rilasciata sotto <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>. Il testo completo della Licenza è riportato di seguito.
- Copyright delle modifiche © 2017<a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_light.png"> <code>cookie</code> è stata creata da Google.
E' stata rilasciata con <a href ="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>
e può essere scaricata dirattamente dal <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>.Non è stata modificata ad eccezione del colore e della dimensione.</p>
<p><img class="icon" src="../shared_images/map_light.png"> map.</p>
<p><img class="icon" src="../shared_images/more_light.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_light.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_light.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_light.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_light.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_light.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2017,2019 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/dark_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+
+ <p>Esistono due categorie generali di cattivi soggetti che vogliono violare la privacy del web:
+ governi maliziosi con accesso agli ISP (Internet Service Providers) e mega corporations che gestiscono social network e agenzie pubblicitarie.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Governi Maliziosi</h3>
+
+ <p>I governi malizionsi spesso spiano i loro cittadini per punire il dissenso o le attività di difesa dei diritti umani.
+ Solitamente, o gestiscono loro stessi gli ISP locali oppure li obbligano a rivelare informazioni mostrando tutti gli indirizzi IP visitati da ciascun utente.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Mega corporations</h3>
+
+ <p>Quando un utente si connette a un web server, il server può vedere l'indirizzo IP dell'utente.
+ Nonostante non sia una scienza esatta, è possibile convertire l'IP in indirizzi fisici con <a href="https://www.whatismyip.com/">discreta accuratezza</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Le mega corporations proprietarie di social media e agenzie pubblicitarie utilizzano però un intero profilo di informazioni con lo scopo di tracciare gli utenti sui dispositivi e sgli indirizzi IP.
+ Questi profili utilizzano molte tecniche diverse per l'identificazione degli utenti, tra cui JavaScript, cookie, ID traccianti,
+ e <a href="https://panopticlick.eff.org/">impronta digitale dei browser</a>.
+ Siccome la maggior parte dei siti web carica gli annunci da una delle principali agenzie o inserisce le icone dei social media e i relativi javascript,
+ costruiscono profili per quasi tutti gli utenti e possono tracciare la loro attività su internet anche se relativa a altri siti.</p>
+
+ <p>Viene tracciato ogni sito visitato, ogni acquisto effettuato, ogni carta di credito utilizzata, ogni indirizzo di spedizione, i metadati GPS di ogni immagine che viene caricata su internet.
+ Viene costruito il profilo per età, sesso, stato civile, indirizzo, appartenenza politica, religione, situazione familiare, animali domestici, e tutto ciò su cui possono mettere le mani.
+ Le corporations acquistano anche i database delle transazioni con carta di credito effettuate nei negozi, per poter tracciare anche le abitudini di acquisto off-line degli utenti nei loro profili.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>La miglior protezione per la privacy contro le mega corporations è quella di navigare con JavaScript disabilitato, seguita dal bloccare gli annunci pubblicitari,
+ disabilitare i cookie e il DOM storage, e utilizzare un browser di cui è difficile avere l'impronta digitale.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_dark.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Download di File con Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
+
+ Translation 2017,2019 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/light_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+
+ <p>Esistono due categorie generali di cattivi soggetti che vogliono violare la privacy del web:
+ governi maliziosi con accesso agli ISP (Internet Service Providers) e mega corporations che gestiscono social network e agenzie pubblicitarie.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Governi Maliziosi</h3>
+
+ <p>I governi malizionsi spesso spiano i loro cittadini per punire il dissenso o le attività di difesa dei diritti umani.
+ Solitamente, o gestiscono loro stessi gli ISP locali oppure li obbligano a rivelare informazioni mostrando tutti gli indirizzi IP visitati da ciascun utente.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Mega corporations</h3>
+
+ <p>Quando un utente si connette a un web server, il server può vedere l'indirizzo IP dell'utente.
+ Nonostante non sia una scienza esatta, è possibile convertire l'IP in indirizzi fisici con <a href="https://www.whatismyip.com/">discreta accuratezza</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Le mega corporations proprietarie di social media e agenzie pubblicitarie utilizzano però un intero profilo di informazioni con lo scopo di tracciare gli utenti sui dispositivi e sgli indirizzi IP.
+ Questi profili utilizzano molte tecniche diverse per l'identificazione degli utenti, tra cui JavaScript, cookie, ID traccianti,
+ e <a href="https://panopticlick.eff.org/">impronta digitale dei browser</a>.
+ Siccome la maggior parte dei siti web carica gli annunci da una delle principali agenzie o inserisce le icone dei social media e i relativi javascript,
+ costruiscono profili per quasi tutti gli utenti e possono tracciare la loro attività su internet anche se relativa a altri siti.</p>
+
+ <p>Viene tracciato ogni sito visitato, ogni acquisto effettuato, ogni carta di credito utilizzata, ogni indirizzo di spedizione, i metadati GPS di ogni immagine che viene caricata su internet.
+ Viene costruito il profilo per età, sesso, stato civile, indirizzo, appartenenza politica, religione, situazione familiare, animali domestici, e tutto ciò su cui possono mettere le mani.
+ Le corporations acquistano anche i database delle transazioni con carta di credito effettuate nei negozi, per poter tracciare anche le abitudini di acquisto off-line degli utenti nei loro profili.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>La miglior protezione per la privacy contro le mega corporations è quella di navigare con JavaScript disabilitato, seguita dal bloccare gli annunci pubblicitari,
+ disabilitare i cookie e il DOM storage, e utilizzare un browser di cui è difficile avere l'impronta digitale.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_light.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Download di File con Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2017 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/dark_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Tor e i suoi limiti</h3>
-
- <p>Esistono due categorie generali di cattivi soggetti che vogliono violare la privacy del web:
- governi maliziosi con accesso agli ISP (Internet Service Providers) e mega corporations che gestiscono social network e agenzie pubblicitarie.
- TOR (The Onion Router) è utile per proteggere la privacy dai governi maliziosi (che spiano il traffico in transito) ma non dalle mega corporations (che mettono codice maligno sui web server).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Governi Maliziosi</h3>
-
- <p>I governi malizionsi spesso spiano i loro cittadini per punire il dissenso o le attività di difesa dei diritti umani.
- Solitamente, o gestiscono loro stessi gli ISP locali oppure li obbligano a rivelare informazioni mostrando tutti gli indirizzi IP visitati da ciascun utente.
- Tor è progettato per combattere questa modalità di violazione della privacy perchè cripta il traffico dei dispositivi e lo indirizza verso tre internet server
- distinti prima di inviarlo alla destinazione finale.
- Questo significa che nessun ISP, server, o sito web, può conoscere l'<a href="https://ipleak.net">indirizzo IP dei dispositivi</a> e nemmeno l'indirizzo IP del server di destinazione.
- I governi malizionsi e gli ISP che essi controllano non possono sapere a quale web server gli utenti stiano accedendo, nonostante sappiano che gli utenti stanno utilizzando Tor.
- In alcune parti del mondo l'utilizzo di Tor potrebbe essere visto come prova di un comportamento illegale (se non si avesse nulla da nascondere non sarebbe necessario criptare il proprio traffico)
- e gli utenti potrebbero essere perseguiti perchè i governi presumerebbero l'esistenza di qualche azione illegale. Pertanto Tor può essere utile, ma non è la soluzione definitiva.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Mega corporations</h3>
-
- <p>Quando un utente si connette a un web server, il server può vedere l'indirizzo IP dell'utente.
- Nonostante non sia una scienza esatta, è possibile convertire l'IP in indirizzi fisici con <a href="https://www.whatismyip.com/">discreta accuratezza</a>.
- I piccoli web server generalmente si affidano agli indirizzi IP per identificare la posizione degli utenti collegati al sito. Tor è una buona soluzione per nascondere la posizione a questi server.
- Le mega corporations proprietarie di social media e agenzie pubblicitarie utilizzano però un intero profilo di informazioni con lo scopo di tracciare gli utenti sui dispositivi e sgli indirizzi IP.
- Questi profili utilizzano molte tecniche diverse per l'identificazione degli utenti, tra cui JavaScript, cookie, ID traccianti,
- e <a href="https://panopticlick.eff.org/">impronta digitale dei browser</a>.
- Siccome la maggior parte dei siti web carica gli annunci da una delle principali agenzie o inserisce le icone dei social media e i relativi javascript,
- costruiscono profili per quasi tutti gli utenti e possono tracciare la loro attività su internet anche se relativa a altri siti.</p>
-
- <p>Viene tracciato ogni sito visitato, ogni acquisto effettuato, ogni carta di credito utilizzata, ogni indirizzo di spedizione, i metadati GPS di ogni immagine che viene caricata su internet.
- Viene costruito il profilo per età, sesso, stato civile, indirizzo, appartenenza politica, religione, situazione familiare, animali domestici, e tutto ciò su cui possono mettere le mani.
- Le corporations acquistano anche i database delle transazioni con carta di credito effettuate nei negozi, per poter tracciare anche le abitudini di acquisto off-line degli utenti nei loro profili.
- Dal momento che sono già in possesso di informazioni molto più accurate sulla localizzazione di un utente rispetto a quanto ottenibile tramite indirizzo IP,
- Tor non fornisce alcuna protezione sulla privacy contro le mega corporations.</p>
-
- <p>La miglior protezione per la privacy contro le mega corporations è quella di navigare con JavaScript disabilitato, seguita dal bloccare gli annunci pubblicitari,
- disabilitare i cookie e il DOM storage, e utilizzare un browser di cui è difficile avere l'impronta digitale.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_dark.png"> Utilizzo di Tor</h3>
-
- <p>Nonostante le sue limitazioni, in alcune circostanze Tor può essere utile.
- Il progetto Tor ha sviluppato una app per Android chiamata Orbot, disponibile su <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- e ovunque sia distribuito Privacy Browser. Privacy Browser è dotato di una impostazione per utilizzare come proxy Orbot.
- Quando lo si abilita, la barra principale di Privacy Browser diventa di colore azzurro chiaro al posto del grigio di default.
- Quando il proxy con Orbot è abilitato nelle impostazioni di Privacy Browser, l'accesso a internet non sarà possibile a meno che Orbot non sia in funzione e connessa a Tor.
- Dal momento che il traffico transita attraverso diversi nodi Tor la connessione è spesso più lenta di una connessione a internet diretta.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Download di File con Tor</h3>
-
- <p>Quando Orbot è in funzione come proxy la navigazione su internet con Privacy Browser viene instradata attraverso la rete Tor, ma ciò non avviene per il download dei file.
- Questo perché Privacy Browser utilizza per scaricare i file il download manager nativo di Android, e questo non ha l'opzione per utilizzare un proxy.
- Chi volesse scaricare file attraverso Orbot deve abilitare quindi la sua modalità VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2017-2019 Soren Stoutner <soren@stoutner.com>.
-
- Translation 2017 Francesco Buratti. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/light_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Tor e i suoi limiti</h3>
-
- <p>Esistono due categorie generali di cattivi soggetti che vogliono violare la privacy del web:
- governi maliziosi con accesso agli ISP (Internet Service Providers) e mega corporations che gestiscono social network e agenzie pubblicitarie.
- TOR (The Onion Router) è utile per proteggere la privacy dai governi maliziosi (che spiano il traffico in transito) ma non dalle mega corporations (che mettono codice maligno sui web server).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Governi Maliziosi</h3>
-
- <p>I governi malizionsi spesso spiano i loro cittadini per punire il dissenso o le attività di difesa dei diritti umani.
- Solitamente, o gestiscono loro stessi gli ISP locali oppure li obbligano a rivelare informazioni mostrando tutti gli indirizzi IP visitati da ciascun utente.
- Tor è progettato per combattere questa modalità di violazione della privacy perchè cripta il traffico dei dispositivi e lo indirizza verso tre internet server
- distinti prima di inviarlo alla destinazione finale.
- Questo significa che nessun ISP, server, o sito web, può conoscere l'<a href="https://ipleak.net">indirizzo IP dei dispositivi</a> e nemmeno l'indirizzo IP del server di destinazione.
- I governi malizionsi e gli ISP che essi controllano non possono sapere a quale web server gli utenti stiano accedendo, nonostante sappiano che gli utenti stanno utilizzando Tor.
- In alcune parti del mondo l'utilizzo di Tor potrebbe essere visto come prova di un comportamento illegale (se non si avesse nulla da nascondere non sarebbe necessario criptare il proprio traffico)
- e gli utenti potrebbero essere perseguiti perchè i governi presumerebbero l'esistenza di qualche azione illegale. Pertanto Tor può essere utile, ma non è la soluzione definitiva.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Mega corporations</h3>
-
- <p>Quando un utente si connette a un web server, il server può vedere l'indirizzo IP dell'utente.
- Nonostante non sia una scienza esatta, è possibile convertire l'IP in indirizzi fisici con <a href="https://www.whatismyip.com/">discreta accuratezza</a>.
- I piccoli web server generalmente si affidano agli indirizzi IP per identificare la posizione degli utenti collegati al sito. Tor è una buona soluzione per nascondere la posizione a questi server.
- Le mega corporations proprietarie di social media e agenzie pubblicitarie utilizzano però un intero profilo di informazioni con lo scopo di tracciare gli utenti sui dispositivi e sgli indirizzi IP.
- Questi profili utilizzano molte tecniche diverse per l'identificazione degli utenti, tra cui JavaScript, cookie, ID traccianti,
- e <a href="https://panopticlick.eff.org/">impronta digitale dei browser</a>.
- Siccome la maggior parte dei siti web carica gli annunci da una delle principali agenzie o inserisce le icone dei social media e i relativi javascript,
- costruiscono profili per quasi tutti gli utenti e possono tracciare la loro attività su internet anche se relativa a altri siti.</p>
-
- <p>Viene tracciato ogni sito visitato, ogni acquisto effettuato, ogni carta di credito utilizzata, ogni indirizzo di spedizione, i metadati GPS di ogni immagine che viene caricata su internet.
- Viene costruito il profilo per età, sesso, stato civile, indirizzo, appartenenza politica, religione, situazione familiare, animali domestici, e tutto ciò su cui possono mettere le mani.
- Le corporations acquistano anche i database delle transazioni con carta di credito effettuate nei negozi, per poter tracciare anche le abitudini di acquisto off-line degli utenti nei loro profili.
- Dal momento che sono già in possesso di informazioni molto più accurate sulla localizzazione di un utente rispetto a quanto ottenibile tramite indirizzo IP,
- Tor non fornisce alcuna protezione sulla privacy contro le mega corporations.</p>
-
- <p>La miglior protezione per la privacy contro le mega corporations è quella di navigare con JavaScript disabilitato, seguita dal bloccare gli annunci pubblicitari,
- disabilitare i cookie e il DOM storage, e utilizzare un browser di cui è difficile avere l'impronta digitale.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_light.png"> Utilizzo di Tor</h3>
-
- <p>Nonostante le sue limitazioni, in alcune circostanze Tor può essere utile.
- Il progetto Tor ha sviluppato una app per Android chiamata Orbot, disponibile su <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- e ovunque sia distribuito Privacy Browser. Privacy Browser è dotato di una impostazione per utilizzare come proxy Orbot.
- Quando lo si abilita, la barra principale di Privacy Browser diventa di colore azzurro chiaro al posto del grigio di default.
- Quando il proxy con Orbot è abilitato nelle impostazioni di Privacy Browser, l'accesso a internet non sarà possibile a meno che Orbot non sia in funzione e connessa a Tor.
- Dal momento che il traffico transita attraverso diversi nodi Tor la connessione è spesso più lenta di una connessione a internet diretta.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Download di File con Tor</h3>
-
- <p>Quando Orbot è in funzione come proxy la navigazione su internet con Privacy Browser viene instradata attraverso la rete Tor, ma ciò non avviene per il download dei file.
- Questo perché Privacy Browser utilizza per scaricare i file il download manager nativo di Android, e questo non ha l'opzione per utilizzare un proxy.
- Chi volesse scaricare file attraverso Orbot deve abilitare quindi la sua modalità VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
которые являются частью <a href="https://material.io/icons/">Android Material icon set</a> и выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
Модификации авторских прав © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_dark.png"> <code>orbot</code> - это модифицированная версия
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">значок статуса из проекта Orbot</a>,
- который защищен авторским правом 2009-2010 Nathan Freitas, The Guardian Project.
- Он выпущен под <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>. Полный текст лицензии приведен ниже.
- Модификации авторских прав © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_dark.png"> <code>cookie</code> были созданы Google. Они выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>
и могут быть загружены из <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>. Он неизменен, за исключением такой информации, как цвет и размер.</p>
<p>Следующие значки взяты из<a href="https://material.io/icons/">Android Material icon set</a>,
<p><img class="icon" src="../shared_images/map_dark.png"> map.</p>
<p><img class="icon" src="../shared_images/more_dark.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_dark.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_dark.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_dark.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_dark.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_dark.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
которые являются частью <a href="https://material.io/icons/">Android Material icon set</a> и выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
Модификации авторских прав © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
- <p><img class="left" src="../shared_images/orbot_light.png"> <code>orbot</code> - это модифицированная версия
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">значок статуса из проекта Orbot</a>,
- который защищен авторским правом 2009-2010 Nathan Freitas, The Guardian Project.
- Он выпущен под <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>. Полный текст лицензии приведен ниже.
- Модификации авторских прав © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- Полученные изображения выпущены под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>.</p>
<p><img class="left" src="../shared_images/cookie_light.png"> <code>cookie</code> были созданы Google. Они выпущены под <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>
и могут быть загружены из <a href="https://materialdesignicons.com/icon/cookie">Material Design Icons</a>. Он неизменен, за исключением такой информации, как цвет и размер.</p>
<p>Следующие значки взяты из<a href="https://material.io/icons/">Android Material icon set</a>,
<p><img class="icon" src="../shared_images/map_light.png"> map.</p>
<p><img class="icon" src="../shared_images/more_light.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_light.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_light.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_light.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_light.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_light.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/dark_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+
+ <p>Существуют две основные отрицательные категории субъектов, которые нарушают конфиденциальность в интернете: злонамеренные правительства, имеющие доступ к интернет-провайдерам и крупные корпорации,
+ которые управляют социальными и рекламными сетями.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Злонамеренные правительства</h3>
+
+ <p>Злонамеренные правительства часто следят за своими гражданами, чтобы наказать за инакомыслие или правозащитную деятельность.
+ Как правило, они либо работают с локальными интернет-провайдерами, либо могут заставить их раскрыть информацию, содержащую статистику посещений сайтов нужного пользователя.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Крупные корпорации</h3>
+
+ <p>Когда пользователь подключается к веб-серверу, сервер может видеть IP-адрес пользователя.
+ Несмотря на то, что пока это работает не идеально, IP-адреса могут быть превращены в физические адреса с <a href="https://www.whatismyip.com/">достаточным количеством точности</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Но крупные корпорации, которые владеют социальными и рекламными сетями, используют весь профиль информации, который предназначен для отслеживания пользователей через устройства и IP-адреса.
+ В этих профилях используются различные методы идентификации пользователей, включая JavaScript, файлы cookie,
+ идентификаторы отслеживания и <a href="https://panopticlick.eff.org/">отпечаток браузера</a>.
+ Поскольку подавляющее большинство веб-сайтов в интернете загружают рекламу от одной из основных сетей или встраивают значки социальных сетей с ассоциированным с ними JavaScript,
+ эти корпорации имеют встроенные профили почти для каждого пользователя в интернете и могут отслеживать интернет-активность на несвязанных сайтах.</p>
+
+ <p>Они отслеживают каждый посещаемый сайт, все, что приобретается, каждую кредитную карту, используемую для совершения покупки, каждый адрес, куда отправляются товары,
+ метаданные GPS каждого изображения, загружаемого в интернет.
+ Они создают профиль из возраста пользователя, пола, семейного положения, адреса, политических пристрастий, религиозной принадлежности, семейных обстоятельств,
+ количества домашних животных и всего остального, что им удается получить.
+ Они даже скупают базы данных транзакций по кредитным картам в местных магазинах, поэтому они могут отслеживать автономные модели покупок пользователей в своих профилях.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>Единственной и самой лучшей защитой конфиденциальности от крупных корпораций является просмотр веб-сайта с отключенным JavaScript, за которым следует блокирование рекламных сетей,
+ отключение файлов cookie и хранилища DOM, а также использование браузера, отпечаток которого трудно определить.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_dark.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Загрузка файлов через сеть Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/light_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+
+ <p>Существуют две основные отрицательные категории субъектов, которые нарушают конфиденциальность в интернете: злонамеренные правительства, имеющие доступ к интернет-провайдерам и крупные корпорации,
+ которые управляют социальными и рекламными сетями.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Злонамеренные правительства</h3>
+
+ <p>Злонамеренные правительства часто следят за своими гражданами, чтобы наказать за инакомыслие или правозащитную деятельность.
+ Как правило, они либо работают с локальными интернет-провайдерами, либо могут заставить их раскрыть информацию, содержащую статистику посещений сайтов нужного пользователя.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Крупные корпорации</h3>
+
+ <p>Когда пользователь подключается к веб-серверу, сервер может видеть IP-адрес пользователя.
+ Несмотря на то, что пока это работает не идеально, IP-адреса могут быть превращены в физические адреса с <a href="https://www.whatismyip.com/">достаточным количеством точности</a>.
+ Small web servers typically rely on IP addresses to identify the location of the users visiting their site. Proxies are a good solution to mask the user’s location from these servers.
+ Но крупные корпорации, которые владеют социальными и рекламными сетями, используют весь профиль информации, который предназначен для отслеживания пользователей через устройства и IP-адреса.
+ В этих профилях используются различные методы идентификации пользователей, включая JavaScript, файлы cookie,
+ идентификаторы отслеживания и <a href="https://panopticlick.eff.org/">отпечаток браузера</a>.
+ Поскольку подавляющее большинство веб-сайтов в интернете загружают рекламу от одной из основных сетей или встраивают значки социальных сетей с ассоциированным с ними JavaScript,
+ эти корпорации имеют встроенные профили почти для каждого пользователя в интернете и могут отслеживать интернет-активность на несвязанных сайтах.</p>
+
+ <p>Они отслеживают каждый посещаемый сайт, все, что приобретается, каждую кредитную карту, используемую для совершения покупки, каждый адрес, куда отправляются товары,
+ метаданные GPS каждого изображения, загружаемого в интернет.
+ Они создают профиль из возраста пользователя, пола, семейного положения, адреса, политических пристрастий, религиозной принадлежности, семейных обстоятельств,
+ количества домашних животных и всего остального, что им удается получить.
+ Они даже скупают базы данных транзакций по кредитным картам в местных магазинах, поэтому они могут отслеживать автономные модели покупок пользователей в своих профилях.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>Единственной и самой лучшей защитой конфиденциальности от крупных корпораций является просмотр веб-сайта с отключенным JavaScript, за которым следует блокирование рекламных сетей,
+ отключение файлов cookie и хранилища DOM, а также использование браузера, отпечаток которого трудно определить.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_light.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Загрузка файлов через сеть Tor</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/dark_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Tor и его ограничения</h3>
-
- <p>Существуют две основные отрицательные категории субъектов, которые нарушают конфиденциальность в интернете: злонамеренные правительства, имеющие доступ к интернет-провайдерам и крупные корпорации,
- которые управляют социальными и рекламными сетями.
- TOR (The Onion Router) полезен для защиты конфиденциальности от злонамеренных правительств (которые отслеживают трафик и его маршруты),
- но не от крупных корпораций (которые внедряют вредоносный код на веб-серверах).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Злонамеренные правительства</h3>
-
- <p>Злонамеренные правительства часто следят за своими гражданами, чтобы наказать за инакомыслие или правозащитную деятельность.
- Как правило, они либо работают с локальными интернет-провайдерами, либо могут заставить их раскрыть информацию, содержащую статистику посещений сайтов нужного пользователя.
- Tor предназначен для того, чтобы победить это нарушение конфиденциальности,
- зашифровав трафик с устройства пользователя и обеспечить его маршрутизацию через три разных сервера в интернете перед отправкой его в конечный пункт назначения.
- Это означает, что ни один провайдер, сервер или сайт не может знать ни <a href="https://ipleak.net">IP-адрес устройства пользователя</a>, ни IP-адрес конечного веб-сервера.
- Злонамеренные правительства и контролируемые ими интернет-провайдеры не могут определить, к каким веб-серверам обращается пользователь, несмотря на то, что они могут видеть, что он использует Tor.
- В некоторых странах использование Tor может быть истолковано как свидетельство незаконного поведения ("если вам нечего скрывать, вы не будете шифровать свой трафик"),
- и пользователи могут быть наказаны, потому что правительства предполагают, что они делают то, что запрещено. Таким образом, Tor может быть полезен, но он не является панацеей.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Крупные корпорации</h3>
-
- <p>Когда пользователь подключается к веб-серверу, сервер может видеть IP-адрес пользователя.
- Несмотря на то, что пока это работает не идеально, IP-адреса могут быть превращены в физические адреса с <a href="https://www.whatismyip.com/">достаточным количеством точности</a>.
- Маленькие веб-серверы обычно используют IP-адреса для определения местоположения пользователей, посещающих их сайт. Tor - хорошее решение для маскировки местоположения пользователя от этих серверов.
- Но крупные корпорации, которые владеют социальными и рекламными сетями, используют весь профиль информации, который предназначен для отслеживания пользователей через устройства и IP-адреса.
- В этих профилях используются различные методы идентификации пользователей, включая JavaScript, файлы cookie,
- идентификаторы отслеживания и <a href="https://panopticlick.eff.org/">отпечаток браузера</a>.
- Поскольку подавляющее большинство веб-сайтов в интернете загружают рекламу от одной из основных сетей или встраивают значки социальных сетей с ассоциированным с ними JavaScript,
- эти корпорации имеют встроенные профили почти для каждого пользователя в интернете и могут отслеживать интернет-активность на несвязанных сайтах.</p>
-
- <p>Они отслеживают каждый посещаемый сайт, все, что приобретается, каждую кредитную карту, используемую для совершения покупки, каждый адрес, куда отправляются товары,
- метаданные GPS каждого изображения, загружаемого в интернет.
- Они создают профиль из возраста пользователя, пола, семейного положения, адреса, политических пристрастий, религиозной принадлежности, семейных обстоятельств,
- количества домашних животных и всего остального, что им удается получить.
- Они даже скупают базы данных транзакций по кредитным картам в местных магазинах, поэтому они могут отслеживать автономные модели покупок пользователей в своих профилях.
- Поскольку у них уже имеется гораздо более точная адресная информация о пользователе, чем раскрытый IP-адрес, Tor не обеспечивает реальной защиты конфиденциальности от крупных корпораций.</p>
-
- <p>Единственной и самой лучшей защитой конфиденциальности от крупных корпораций является просмотр веб-сайта с отключенным JavaScript, за которым следует блокирование рекламных сетей,
- отключение файлов cookie и хранилища DOM, а также использование браузера, отпечаток которого трудно определить.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_dark.png"> Использование Tor</h3>
-
- <p>Несмотря на свои ограничения, Tor может быть полезен в некоторых обстоятельствах.
- У проекта Tor есть приложение для Android под названием Orbot, которое доступно в <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a> и везде,
- где распространяется Privacy Browser. У Privacy Browser есть параметр для использования Orbot в качестве прокси.
- Если этот параметр включен, панель приложений Privacy Browser будет иметь светло-синий фон вместо стандартного светло-серого.
- Когда включен параметр прокси-сервера Orbot Privacy Browser, доступ к интернету работать не будет, если Orbot не запущен и не подключен к Tor.
- Поскольку трафик маршрутизируется через несколько узлов, доступ к интернету через Tor будет происходить намного медленнее, чем при прямом подключении.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Загрузка файлов через сеть Tor</h3>
-
- <p>При работе Orbot в режиме проксирования, весь трафик Privacy Browser будет маршрутизироваться через сеть Tor за исключением загружаемых файлов.
- Это связано с тем, что Privacy Browser использует встроенный менеджер загрузок Android который не имеет возможности проксирования.
- Пользователи, которые хотят загружать файлы через Orbot, должны включить режим VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/light_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Tor и его ограничения</h3>
-
- <p>Существуют две основные отрицательные категории субъектов, которые нарушают конфиденциальность в интернете: злонамеренные правительства, имеющие доступ к интернет-провайдерам и крупные корпорации,
- которые управляют социальными и рекламными сетями.
- TOR (The Onion Router) полезен для защиты конфиденциальности от злонамеренных правительств (которые отслеживают трафик и его маршруты),
- но не от крупных корпораций (которые внедряют вредоносный код на веб-серверах).</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Злонамеренные правительства</h3>
-
- <p>Злонамеренные правительства часто следят за своими гражданами, чтобы наказать за инакомыслие или правозащитную деятельность.
- Как правило, они либо работают с локальными интернет-провайдерами, либо могут заставить их раскрыть информацию, содержащую статистику посещений сайтов нужного пользователя.
- Tor предназначен для того, чтобы победить это нарушение конфиденциальности,
- зашифровав трафик с устройства пользователя и обеспечить его маршрутизацию через три разных сервера в интернете перед отправкой его в конечный пункт назначения.
- Это означает, что ни один провайдер, сервер или сайт не может знать ни <a href="https://ipleak.net">IP-адрес устройства пользователя</a>, ни IP-адрес конечного веб-сервера.
- Злонамеренные правительства и контролируемые ими интернет-провайдеры не могут определить, к каким веб-серверам обращается пользователь, несмотря на то, что они могут видеть, что он использует Tor.
- В некоторых странах использование Tor может быть истолковано как свидетельство незаконного поведения ("если вам нечего скрывать, вы не будете шифровать свой трафик"),
- и пользователи могут быть наказаны, потому что правительства предполагают, что они делают то, что запрещено. Таким образом, Tor может быть полезен, но он не является панацеей.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Крупные корпорации</h3>
-
- <p>Когда пользователь подключается к веб-серверу, сервер может видеть IP-адрес пользователя.
- Несмотря на то, что пока это работает не идеально, IP-адреса могут быть превращены в физические адреса с <a href="https://www.whatismyip.com/">достаточным количеством точности</a>.
- Маленькие веб-серверы обычно используют IP-адреса для определения местоположения пользователей, посещающих их сайт. Tor - хорошее решение для маскировки местоположения пользователя от этих серверов.
- Но крупные корпорации, которые владеют социальными и рекламными сетями, используют весь профиль информации, который предназначен для отслеживания пользователей через устройства и IP-адреса.
- В этих профилях используются различные методы идентификации пользователей, включая JavaScript, файлы cookie,
- идентификаторы отслеживания и <a href="https://panopticlick.eff.org/">отпечаток браузера</a>.
- Поскольку подавляющее большинство веб-сайтов в интернете загружают рекламу от одной из основных сетей или встраивают значки социальных сетей с ассоциированным с ними JavaScript,
- эти корпорации имеют встроенные профили почти для каждого пользователя в интернете и могут отслеживать интернет-активность на несвязанных сайтах.</p>
-
- <p>Они отслеживают каждый посещаемый сайт, все, что приобретается, каждую кредитную карту, используемую для совершения покупки, каждый адрес, куда отправляются товары,
- метаданные GPS каждого изображения, загружаемого в интернет.
- Они создают профиль из возраста пользователя, пола, семейного положения, адреса, политических пристрастий, религиозной принадлежности, семейных обстоятельств,
- количества домашних животных и всего остального, что им удается получить.
- Они даже скупают базы данных транзакций по кредитным картам в местных магазинах, поэтому они могут отслеживать автономные модели покупок пользователей в своих профилях.
- Поскольку у них уже имеется гораздо более точная адресная информация о пользователе, чем раскрытый IP-адрес, Tor не обеспечивает реальной защиты конфиденциальности от крупных корпораций.</p>
-
- <p>Единственной и самой лучшей защитой конфиденциальности от крупных корпораций является просмотр веб-сайта с отключенным JavaScript, за которым следует блокирование рекламных сетей,
- отключение файлов cookie и хранилища DOM, а также использование браузера, отпечаток которого трудно определить.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_light.png"> Использование Tor</h3>
-
- <p>Несмотря на свои ограничения, Tor может быть полезен в некоторых обстоятельствах.
- У проекта Tor есть приложение для Android под названием Orbot, которое доступно в <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a> и везде,
- где распространяется Privacy Browser. У Privacy Browser есть параметр для использования Orbot в качестве прокси.
- Если этот параметр включен, панель приложений Privacy Browser будет иметь светло-синий фон вместо стандартного светло-серого.
- Когда включен параметр прокси-сервера Orbot Privacy Browser, доступ к интернету работать не будет, если Orbot не запущен и не подключен к Tor.
- Поскольку трафик маршрутизируется через несколько узлов, доступ к интернету через Tor будет происходить намного медленнее, чем при прямом подключении.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Загрузка файлов через сеть Tor</h3>
-
- <p>При работе Orbot в режиме проксирования, весь трафик Privacy Browser будет маршрутизироваться через сеть Tor за исключением загружаемых файлов.
- Это связано с тем, что Privacy Browser использует встроенный менеджер загрузок Android который не имеет возможности проксирования.
- Пользователи, которые хотят загружать файлы через Orbot, должны включить режим VPN.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
<a href="https://material.io/icons/">Android Material</a> simge setinin bir parçası olan <code>sort</code>'dan elde edilmiştir.
Değişikliklerin telif hakkı © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
Ortaya çıkan görüntü <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> lisansı altında yayınlandı.</p>
- <p><img class="left" src="../shared_images/orbot_dark.png"> <code>orbot</code>, telif hakkı 2009-2010 Nathan Freitas, The Guardian Project ait olan,
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">Orbot projesi durum simgesi</a>nin modifiye edilmiş bir sürümüdür ve
- <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD</a> lisansı altında yayınlanmıştır.
- Lisansın tüm metni aşağıdadır. Değişikliklerin telif hakkı © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- Ortaya çıkan görüntü <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> lisansı altında yayınlandı.</p>
<p><img class="left" src="../shared_images/cookie_dark.png"> <code>cookie</code> Google tarafından oluşturuldu.
<a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a> altında yayınlandı ve <a href="https://materialdesignicons.com/icon/cookie">Material Design</a>
simgelerinden indirilebilir. Renk ve ebat gibi düzen bilgileri dışında herhangi bir değişiklik yapılmamıştır.</p>
<p><img class="icon" src="../shared_images/map_dark.png"> map.</p>
<p><img class="icon" src="../shared_images/more_dark.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_dark.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_dark.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_dark.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_dark.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_dark.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
<a href="https://material.io/icons/">Android Material</a> simge setinin bir parçası olan <code>sort</code>'dan elde edilmiştir.
Değişikliklerin telif hakkı © 2019 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
Ortaya çıkan görüntü <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> lisansı altında yayınlandı.</p>
- <p><img class="left" src="../shared_images/orbot_light.png"> <code>orbot</code>, telif hakkı 2009-2010 Nathan Freitas, The Guardian Project ait olan,
- <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">Orbot projesi durum simgesi</a>nin modifiye edilmiş bir sürümüdür ve
- <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD</a> lisansı altında yayınlanmıştır.
- Lisansın tüm metni aşağıdadır. Değişikliklerin telif hakkı © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
- Ortaya çıkan görüntü <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> lisansı altında yayınlandı.</p>
<p><img class="left" src="../shared_images/cookie_light.png"> <code>cookie</code> Google tarafından oluşturuldu.
<a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a> altında yayınlandı ve <a href="https://materialdesignicons.com/icon/cookie">Material Design</a>
simgelerinden indirilebilir. Renk ve ebat gibi düzen bilgileri dışında herhangi bir değişiklik yapılmamıştır.</p>
<p><img class="icon" src="../shared_images/map_light.png"> map.</p>
<p><img class="icon" src="../shared_images/more_light.png"> more.</p>
<p><img class="icon" src="../shared_images/new_releases_light.png"> new releases.</p>
+ <p><img class="icon" src="../shared_images/open_in_browser_light.png"> open_in_browser.</p>
<p><img class="icon" src="../shared_images/payment_light.png"> payment.</p>
<p><img class="icon" src="../shared_images/question_answer_light.png"> question_answer.</p>
<p><img class="icon" src="../shared_images/refresh_light.png"> refresh.</p>
OF ANY KIND, either express or implied.
See the License for the specific
language governing permissions and
-limitations under the License.</pre>
-
- <hr/>
-
- <h3>3-Clause BSD License</h3>
-
- <p>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:</p>
-
- <ul>
- <li>Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.</li>
-
- <li>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.</li>
-
- <li>Neither the names of the copyright owners nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.</li>
- </ul>
-
- <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
- </body>
-</html>
\ No newline at end of file
+limitations under the License.</pre>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/dark_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Proxies and Their Limits</h3>
+
+ <p>İnternet gizliliğini ihlal etmek isteyen iki genel kötü oyuncu kategorisi vardır:
+ İSS’lere (İnternet Servis Sağlayıcıları) erişimi olan kötü niyetli hükümetler ve sosyal ve reklam ağlarını yöneten mega şirketler.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Kötü Niyetli Hükümetler</h3>
+
+ <p>Kötü niyetli hükümetler, sık sık muhalifleri ve aktivistleri cezalandırmak için kendi vatandaşlarını gözetler.
+ Bunu genellikle yerel İSS’leri kullanarak ve onları, tüm kullanıcıların internet ziyaretlerinde kullandıkları IP adresleri gösteren bilgileri ifşa etmeye zorlayarak yaparlar.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_dark.png"> Mega Şirketler</h3>
+
+ <p>Bir kullanıcı bir web sunucusuna bağlandığında, web sunucusu kullanıcının IP adresini görebilir.
+ Mükemmel bir teknik olmasa da, IP adresleri <a href="https://www.whatismyip.com/">makul bir doğrulukla</a> fiziksel adreslere dönüştürülebilir.
+ Küçük web sunucuları, kendilerini ziyaret eden kullanıcılarının konumlarını belirlemek için IP adreslerine genel anlamda güvenirler.
+ Proxies are a good solution to mask the user’s location from these servers.
+ Ancak, sosyal medya ve reklam ağlarına sahip büyük mega kuruluşlar, cihazlar ve IP adresler üzerinden kullanıcıları izlemek için tüm bilgileri kullanır.
+ Bu profiller, JavaScript, çerezler, izleme kimlikleri ve <a href="https://panopticlick.eff.org/">browser fingerprinting (tarayıcı tanılama)</a>
+ dahil olmak üzere kullanıcıları tanımlamak için çeşitli teknikleri kullanır.
+ İnternetteki web sitelerinin büyük çoğunluğu ya ana ağlardan birinden bir reklam yüklediğinden ya da JavaScript ile ilişkilendirilen sosyal medya simgelerini yerleştirdiklerinden dolayı,
+ mega şirketler, hemen hemen her çevrimiçi kullanıcı için profil oluşturup internet aktivitelerini ilgisi olmayan sitelerden bile takip edebilirler.</p>
+
+ <p>Ziyaret edilen her siteyi, satın alınan her şeyi, satın almak için kullanılan her kredi kartını, eşyaların kargolandığı her adresi ve internete yüklenen her fotoğrafın GPS metaverilerini izlerler.
+ Bu sayede, bir kullanıcının yaşı, cinsiyeti, medeni hali, adresi, politik görüşü, dini görüşü, aile çevresi, evcil hayvan sayısı ve elde edebildikleri her şey hakkında bir profil oluştururlar.
+ Hatta yerel mağazalardan kredi kart işlem veri tabanlarını satın alırlar, böylece oluşturdukları profillerdeki kullanıcıların çevrimdışı satın alma modellerini de takip edebilirler.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>Mega şirketlere karşı en iyi gizlilik koruması, reklamları engellemek, JavaScript’i, DOM depolamayı ve çerezleri devre dışı bırakıp web gezintisi yapmak
+ ve fingerprint yapılması zor olan bir tarayıcı kullanmak olacaktır.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_dark.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Tor ile Dosya İndirme</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!--
+ Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+ <head>
+ <meta charset="UTF-8">
+
+ <link rel="stylesheet" href="../css/light_theme.css">
+ </head>
+
+ <body>
+ <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Proxies and Their Limits</h3>
+
+ <p>İnternet gizliliğini ihlal etmek isteyen iki genel kötü oyuncu kategorisi vardır:
+ İSS’lere (İnternet Servis Sağlayıcıları) erişimi olan kötü niyetli hükümetler ve sosyal ve reklam ağlarını yöneten mega şirketler.
+ Proxies like TOR (The Onion Router) and I2P (the Invisible Internet Project) are useful in protecting privacy from malicious governments (which spy on traffic in transit)
+ but not from mega corporations (which embed malicious code on web servers).</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Kötü Niyetli Hükümetler</h3>
+
+ <p>Kötü niyetli hükümetler, sık sık muhalifleri ve aktivistleri cezalandırmak için kendi vatandaşlarını gözetler.
+ Bunu genellikle yerel İSS’leri kullanarak ve onları, tüm kullanıcıların internet ziyaretlerinde kullandıkları IP adresleri gösteren bilgileri ifşa etmeye zorlayarak yaparlar.
+ Layered proxies are designed to defeat this infringement of privacy by encrypting the traffic from a user’s device and routing it through multiple servers on the internet
+ before sending it on to the final destination.
+ This means that no individual ISP, server, or website, can know both the <a href="https://ipleak.net">IP address of the user’s device</a> and the IP address of the final web server.
+ Malicious governments and the ISPs they control cannot tell which web servers a user is accessing, although they can tell that the user is using a layered proxy service.
+ In some parts of the world, using proxies could be construed as an evidence of illegal behavior (“If you didn’t have anything to hide you wouldn’t be encrypting your traffic”)
+ and users could be punished because governments assume they are doing something that is prohibited. Thus, proxies can be helpful, but they aren’t a panacea.</p>
+
+
+ <h3><img class="title" src="../shared_images/language_blue_light.png"> Mega Şirketler</h3>
+
+ <p>Bir kullanıcı bir web sunucusuna bağlandığında, web sunucusu kullanıcının IP adresini görebilir.
+ Mükemmel bir teknik olmasa da, IP adresleri <a href="https://www.whatismyip.com/">makul bir doğrulukla</a> fiziksel adreslere dönüştürülebilir.
+ Küçük web sunucuları, kendilerini ziyaret eden kullanıcılarının konumlarını belirlemek için IP adreslerine genel anlamda güvenirler.
+ Proxies are a good solution to mask the user’s location from these servers.
+ Ancak, sosyal medya ve reklam ağlarına sahip büyük mega kuruluşlar, cihazlar ve IP adresler üzerinden kullanıcıları izlemek için tüm bilgileri kullanır.
+ Bu profiller, JavaScript, çerezler, izleme kimlikleri ve <a href="https://panopticlick.eff.org/">browser fingerprinting (tarayıcı tanılama)</a>
+ dahil olmak üzere kullanıcıları tanımlamak için çeşitli teknikleri kullanır.
+ İnternetteki web sitelerinin büyük çoğunluğu ya ana ağlardan birinden bir reklam yüklediğinden ya da JavaScript ile ilişkilendirilen sosyal medya simgelerini yerleştirdiklerinden dolayı,
+ mega şirketler, hemen hemen her çevrimiçi kullanıcı için profil oluşturup internet aktivitelerini ilgisi olmayan sitelerden bile takip edebilirler.</p>
+
+ <p>Ziyaret edilen her siteyi, satın alınan her şeyi, satın almak için kullanılan her kredi kartını, eşyaların kargolandığı her adresi ve internete yüklenen her fotoğrafın GPS metaverilerini izlerler.
+ Bu sayede, bir kullanıcının yaşı, cinsiyeti, medeni hali, adresi, politik görüşü, dini görüşü, aile çevresi, evcil hayvan sayısı ve elde edebildikleri her şey hakkında bir profil oluştururlar.
+ Hatta yerel mağazalardan kredi kart işlem veri tabanlarını satın alırlar, böylece oluşturdukları profillerdeki kullanıcıların çevrimdışı satın alma modellerini de takip edebilirler.
+ Because they already have much more accurate address information about a user than an IP address discloses, proxies provides no real privacy protection against mega corporations.</p>
+
+ <p>Mega şirketlere karşı en iyi gizlilik koruması, reklamları engellemek, JavaScript’i, DOM depolamayı ve çerezleri devre dışı bırakıp web gezintisi yapmak
+ ve fingerprint yapılması zor olan bir tarayıcı kullanmak olacaktır.</p>
+
+
+ <h3><img class="title" src="../shared_images/open_in_browser_blue_light.png"> Using Proxies</h3>
+
+ <p>Despite their limitations, proxies can be useful in some circumstances.
+ <a href="https://play.google.com/store/apps/details?id=org.torproject.android">Tor</a> and <a href="https://f-droid.org/en/packages/net.i2p.android.router/">I2p</a>
+ have Android apps that make it easy to use their proxy networks. When proxying is turned on in Privacy Browser, the app bar will have a light blue background instead of the default light grey.
+ Because traffic is being routed through several proxy nodes, using a layered proxy is often much slower than connecting directly to the internet.</p>
+
+ <img class="center" src="images/tor.png">
+
+ <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Tor ile Dosya İndirme</h3>
+
+ <p>When Orbot is operating in proxy mode, browsing the internet using Privacy Browser will be routed through the proxy, but file downloads will not.
+ This is because Privacy Browser uses Android’s builtin download manager to download files, which doesn’t have a proxy option.
+ Users who want to download files via Orbot need to enable its VPN mode. There is currently no way to download files through I2P.</p>
+
+ <img class="center" src="../shared_images/vpn_mode.png">
+ </body>
+</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/dark_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_dark.png"> Tor ve Limitleri</h3>
-
- <p>İnternet gizliliğini ihlal etmek isteyen iki genel kötü oyuncu kategorisi vardır:
- İSS’lere (İnternet Servis Sağlayıcıları) erişimi olan kötü niyetli hükümetler ve sosyal ve reklam ağlarını yöneten mega şirketler.
- TOR (Soğan Yönlendirme Protokolü), kötü niyetli hükümetlerden (internet trafiğini gözetleyen)
- gizliliği korumakta kullanışlıdır fakat mega şirketlerden (web sunucularına kötü amaçlı kod yerleştiren) korumaz.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Kötü Niyetli Hükümetler</h3>
-
- <p>Kötü niyetli hükümetler, sık sık muhalifleri ve aktivistleri cezalandırmak için kendi vatandaşlarını gözetler.
- Bunu genellikle yerel İSS’leri kullanarak ve onları, tüm kullanıcıların internet ziyaretlerinde kullandıkları IP adresleri gösteren bilgileri ifşa etmeye zorlayarak yaparlar.
- Tor, bir kullanıcının cihazından çıkan trafiği şifreleyerek ve son hedefe göndermeden önce internette üç ayrı sunucuya yönlendirerek bu gizlilik ihlalinin üstesinden gelmesi için tasarlanmıştır.
- Bu da, hiçbir İSS, sunucu veya web sitesinin, aynı anda hem <a href="https://ipleak.net">kullanıcı cihazının IP adresini</a> hem de son web sunucusunun IP adresini bilemeyeceği anlamına gelir.
- Kötücül hükümetler ve kontrolündeki İSS’ler, kullanıcının Tor kullandığını bilmelerine rağmen hangi web sunucularına eriştiğini söyleyemez.
- Bazı ülkelerde, Tor kullanmak yasadışı davranışların bir kanıtı olarak yorumlanabilir (“saklayacak bir şeyin olmasaydı, internet trafiğini şifrelemezdin.” mantığı) ve bu sebeple,
- yasadışı eylemlerde bulunduklarını düşündükleri kullanıcılar hükümetlerce cezalandırılabilir. Bu yüzden Tor gizlilik konusunda yardımcı olabilir, fakat her derde deva değildir.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_dark.png"> Mega Şirketler</h3>
-
- <p>Bir kullanıcı bir web sunucusuna bağlandığında, web sunucusu kullanıcının IP adresini görebilir.
- Mükemmel bir teknik olmasa da, IP adresleri <a href="https://www.whatismyip.com/">makul bir doğrulukla</a> fiziksel adreslere dönüştürülebilir.
- Küçük web sunucuları, kendilerini ziyaret eden kullanıcılarının konumlarını belirlemek için IP adreslerine genel anlamda güvenirler.
- Tor, kullanıcının konumunu bu sunuculardan gizlemek için iyi bir çözümdür.
- Ancak, sosyal medya ve reklam ağlarına sahip büyük mega kuruluşlar, cihazlar ve IP adresler üzerinden kullanıcıları izlemek için tüm bilgileri kullanır.
- Bu profiller, JavaScript, çerezler, izleme kimlikleri ve <a href="https://panopticlick.eff.org/">browser fingerprinting (tarayıcı tanılama)</a>
- dahil olmak üzere kullanıcıları tanımlamak için çeşitli teknikleri kullanır.
- İnternetteki web sitelerinin büyük çoğunluğu ya ana ağlardan birinden bir reklam yüklediğinden ya da JavaScript ile ilişkilendirilen sosyal medya simgelerini yerleştirdiklerinden dolayı,
- mega şirketler, hemen hemen her çevrimiçi kullanıcı için profil oluşturup internet aktivitelerini ilgisi olmayan sitelerden bile takip edebilirler.</p>
-
- <p>Ziyaret edilen her siteyi, satın alınan her şeyi, satın almak için kullanılan her kredi kartını, eşyaların kargolandığı her adresi ve internete yüklenen her fotoğrafın GPS metaverilerini izlerler.
- Bu sayede, bir kullanıcının yaşı, cinsiyeti, medeni hali, adresi, politik görüşü, dini görüşü, aile çevresi, evcil hayvan sayısı ve elde edebildikleri her şey hakkında bir profil oluştururlar.
- Hatta yerel mağazalardan kredi kart işlem veri tabanlarını satın alırlar, böylece oluşturdukları profillerdeki kullanıcıların çevrimdışı satın alma modellerini de takip edebilirler.
- Tor, mega şirketlere karşı, bir kullanıcı hakkında bir IP adresinin gösterebileceğinden daha fazla bilgiye sahip olduklarından dolayı gerçek bir gizlilik koruması sağlamaz.</p>
-
- <p>Mega şirketlere karşı en iyi gizlilik koruması, reklamları engellemek, JavaScript’i, DOM depolamayı ve çerezleri devre dışı bırakıp web gezintisi yapmak
- ve fingerprint yapılması zor olan bir tarayıcı kullanmak olacaktır.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_dark.png"> Tor Kullanma</h3>
-
- <p>Kısıtlamalarına rağmen, Tor bazı koşullarda faydalı olabilir.
- Tor projesinin, <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- üzerinde ve Privacy Browser’ın dağıtımı yapılan her yerde erişilebilecek Orbot adlı Android uygulaması vardır. Privacy Browser, Orbot’u proxy olarak kullanmak için bir ayara sahiptir.
- Bu ayar açıldığında, Privacy Browser’ın uygulama çubuğunun varsayılan rengi açık griden açık mavi bir arkaplana dönecektir.
- Privacy Browser’in Orbot proxy ayarı etkin olduğunda, internet erişiminin çalışması için Orbot’un çalışması ve Tor’a bağlı olması gereklidir.
- İnternet trafiği birçok Tor devresi (node) üzerinden yönlendirildiği için, Tor kullanımı normal internet trafiğinden daha yavaş olacaktır.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_dark.png"> Tor ile Dosya İndirme</h3>
-
- <p>Orbot, proxy modunda çalışırken, Privacy Browser kullanarak internette gezinmek Tor ağı üzerinden yönlendirilir, fakat dosya indirmeleri yönlendirilmez.
- Bunun nedeni, Privacy Browser’ın dosyaları indirmek için bir proxy ayarı olmayan Android’in yerleşik indirme yöneticisi kullanmasıdır.
- Orbot aracılığıyla dosya indirmek isteyen kullanıcıların VPN modunu etkinleştirmesi gerekir.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
+++ /dev/null
-<!--
- Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<html>
- <head>
- <meta charset="UTF-8">
-
- <link rel="stylesheet" href="../css/light_theme.css">
- </head>
-
- <body>
- <h3><img class="title" src="../shared_images/vpn_key_blue_light.png"> Tor ve Limitleri</h3>
-
- <p>İnternet gizliliğini ihlal etmek isteyen iki genel kötü oyuncu kategorisi vardır:
- İSS’lere (İnternet Servis Sağlayıcıları) erişimi olan kötü niyetli hükümetler ve sosyal ve reklam ağlarını yöneten mega şirketler.
- TOR (Soğan Yönlendirme Protokolü), kötü niyetli hükümetlerden (internet trafiğini gözetleyen)
- gizliliği korumakta kullanışlıdır fakat mega şirketlerden (web sunucularına kötü amaçlı kod yerleştiren) korumaz.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Kötü Niyetli Hükümetler</h3>
-
- <p>Kötü niyetli hükümetler, sık sık muhalifleri ve aktivistleri cezalandırmak için kendi vatandaşlarını gözetler.
- Bunu genellikle yerel İSS’leri kullanarak ve onları, tüm kullanıcıların internet ziyaretlerinde kullandıkları IP adresleri gösteren bilgileri ifşa etmeye zorlayarak yaparlar.
- Tor, bir kullanıcının cihazından çıkan trafiği şifreleyerek ve son hedefe göndermeden önce internette üç ayrı sunucuya yönlendirerek bu gizlilik ihlalinin üstesinden gelmesi için tasarlanmıştır.
- Bu da, hiçbir İSS, sunucu veya web sitesinin, aynı anda hem <a href="https://ipleak.net">kullanıcı cihazının IP adresini</a> hem de son web sunucusunun IP adresini bilemeyeceği anlamına gelir.
- Kötücül hükümetler ve kontrolündeki İSS’ler, kullanıcının Tor kullandığını bilmelerine rağmen hangi web sunucularına eriştiğini söyleyemez.
- Bazı ülkelerde, Tor kullanmak yasadışı davranışların bir kanıtı olarak yorumlanabilir (“saklayacak bir şeyin olmasaydı, internet trafiğini şifrelemezdin.” mantığı) ve bu sebeple,
- yasadışı eylemlerde bulunduklarını düşündükleri kullanıcılar hükümetlerce cezalandırılabilir. Bu yüzden Tor gizlilik konusunda yardımcı olabilir, fakat her derde deva değildir.</p>
-
-
- <h3><img class="title" src="../shared_images/language_blue_light.png"> Mega Şirketler</h3>
-
- <p>Bir kullanıcı bir web sunucusuna bağlandığında, web sunucusu kullanıcının IP adresini görebilir.
- Mükemmel bir teknik olmasa da, IP adresleri <a href="https://www.whatismyip.com/">makul bir doğrulukla</a> fiziksel adreslere dönüştürülebilir.
- Küçük web sunucuları, kendilerini ziyaret eden kullanıcılarının konumlarını belirlemek için IP adreslerine genel anlamda güvenirler.
- Tor, kullanıcının konumunu bu sunuculardan gizlemek için iyi bir çözümdür.
- Ancak, sosyal medya ve reklam ağlarına sahip büyük mega kuruluşlar, cihazlar ve IP adresler üzerinden kullanıcıları izlemek için tüm bilgileri kullanır.
- Bu profiller, JavaScript, çerezler, izleme kimlikleri ve <a href="https://panopticlick.eff.org/">browser fingerprinting (tarayıcı tanılama)</a>
- dahil olmak üzere kullanıcıları tanımlamak için çeşitli teknikleri kullanır.
- İnternetteki web sitelerinin büyük çoğunluğu ya ana ağlardan birinden bir reklam yüklediğinden ya da JavaScript ile ilişkilendirilen sosyal medya simgelerini yerleştirdiklerinden dolayı,
- mega şirketler, hemen hemen her çevrimiçi kullanıcı için profil oluşturup internet aktivitelerini ilgisi olmayan sitelerden bile takip edebilirler.</p>
-
- <p>Ziyaret edilen her siteyi, satın alınan her şeyi, satın almak için kullanılan her kredi kartını, eşyaların kargolandığı her adresi ve internete yüklenen her fotoğrafın GPS metaverilerini izlerler.
- Bu sayede, bir kullanıcının yaşı, cinsiyeti, medeni hali, adresi, politik görüşü, dini görüşü, aile çevresi, evcil hayvan sayısı ve elde edebildikleri her şey hakkında bir profil oluştururlar.
- Hatta yerel mağazalardan kredi kart işlem veri tabanlarını satın alırlar, böylece oluşturdukları profillerdeki kullanıcıların çevrimdışı satın alma modellerini de takip edebilirler.
- Tor, mega şirketlere karşı, bir kullanıcı hakkında bir IP adresinin gösterebileceğinden daha fazla bilgiye sahip olduklarından dolayı gerçek bir gizlilik koruması sağlamaz.</p>
-
- <p>Mega şirketlere karşı en iyi gizlilik koruması, reklamları engellemek, JavaScript’i, DOM depolamayı ve çerezleri devre dışı bırakıp web gezintisi yapmak
- ve fingerprint yapılması zor olan bir tarayıcı kullanmak olacaktır.</p>
-
-
- <h3><img class="title" src="../shared_images/orbot_blue_light.png"> Tor Kullanma</h3>
-
- <p>Kısıtlamalarına rağmen, Tor bazı koşullarda faydalı olabilir.
- Tor projesinin, <a href="https://f-droid.org/repository/browse/?fdfilter=orbot&fdid=org.torproject.android">F-Droid</a>
- üzerinde ve Privacy Browser’ın dağıtımı yapılan her yerde erişilebilecek Orbot adlı Android uygulaması vardır. Privacy Browser, Orbot’u proxy olarak kullanmak için bir ayara sahiptir.
- Bu ayar açıldığında, Privacy Browser’ın uygulama çubuğunun varsayılan rengi açık griden açık mavi bir arkaplana dönecektir.
- Privacy Browser’in Orbot proxy ayarı etkin olduğunda, internet erişiminin çalışması için Orbot’un çalışması ve Tor’a bağlı olması gereklidir.
- İnternet trafiği birçok Tor devresi (node) üzerinden yönlendirildiği için, Tor kullanımı normal internet trafiğinden daha yavaş olacaktır.</p>
-
- <img class="center" src="images/tor.png">
-
- <h3><img class="title" src="../shared_images/file_download_blue_light.png"> Tor ile Dosya İndirme</h3>
-
- <p>Orbot, proxy modunda çalışırken, Privacy Browser kullanarak internette gezinmek Tor ağı üzerinden yönlendirilir, fakat dosya indirmeleri yönlendirilmez.
- Bunun nedeni, Privacy Browser’ın dosyaları indirmek için bir proxy ayarı olmayan Android’in yerleşik indirme yöneticisi kullanmasıdır.
- Orbot aracılığıyla dosya indirmek isteyen kullanıcıların VPN modunu etkinleştirmesi gerekir.</p>
-
- <img class="center" src="../shared_images/vpn_mode.png">
- </body>
-</html>
\ No newline at end of file
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar; // The AndroidX toolbar must be used until the minimum API is >= 21.
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.appcompat.widget.Toolbar;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
-import com.stoutner.privacybrowser.fragments.GuideTabFragment;
+import com.stoutner.privacybrowser.adapters.GuidePagerAdapter;
import com.stoutner.privacybrowser.R;
public class GuideActivity extends AppCompatActivity {
// Setup the ViewPager.
ViewPager aboutViewPager = findViewById(R.id.guide_viewpager);
assert aboutViewPager != null; // This assert removes the incorrect warning in Android Studio on the following line that aboutViewPager might be null.
- aboutViewPager.setAdapter(new guidePagerAdapter(getSupportFragmentManager()));
+ aboutViewPager.setAdapter(new GuidePagerAdapter(getSupportFragmentManager(), getApplicationContext()));
// Setup the TabLayout and connect it to the ViewPager.
TabLayout aboutTabLayout = findViewById(R.id.guide_tablayout);
assert aboutTabLayout != null; // This assert removes the incorrect warning in Android Studio on the following line that aboutTabLayout might be null.
aboutTabLayout.setupWithViewPager(aboutViewPager);
}
-
- private class guidePagerAdapter extends FragmentPagerAdapter {
- private guidePagerAdapter(FragmentManager fragmentManager) {
- // Run the default commands.
- super(fragmentManager);
- }
-
- @Override
- // Get the count of the number of tabs.
- public int getCount() {
- return 10;
- }
-
- @Override
- // Get the name of each tab. Tab numbers start at 0.
- public CharSequence getPageTitle(int tab) {
- switch (tab) {
- case 0:
- return getString(R.string.overview);
-
- case 1:
- return getString(R.string.javascript);
-
- case 2:
- return getString(R.string.local_storage);
-
- case 3:
- return getString(R.string.user_agent);
-
- case 4:
- return getString(R.string.requests);
-
- case 5:
- return getString(R.string.domain_settings);
-
- case 6:
- return getString(R.string.ssl_certificates);
-
- case 7:
- return getString(R.string.tor);
-
- case 8:
- return getString(R.string.tracking_ids);
-
- case 9:
- return getString(R.string.bookmarks);
-
- default:
- return "";
- }
- }
-
- @Override
- // Setup each tab.
- public Fragment getItem(int tab) {
- return GuideTabFragment.createTab(tab);
- }
- }
}
import com.stoutner.privacybrowser.dialogs.EditBookmarkFolderDialog;
import com.stoutner.privacybrowser.dialogs.FontSizeDialog;
import com.stoutner.privacybrowser.dialogs.HttpAuthenticationDialog;
+import com.stoutner.privacybrowser.dialogs.ProxyNotInstalledDialog;
import com.stoutner.privacybrowser.dialogs.PinnedMismatchDialog;
import com.stoutner.privacybrowser.dialogs.SaveWebpageImageDialog;
import com.stoutner.privacybrowser.dialogs.SslCertificateErrorDialog;
import com.stoutner.privacybrowser.dialogs.StoragePermissionDialog;
import com.stoutner.privacybrowser.dialogs.UrlHistoryDialog;
import com.stoutner.privacybrowser.dialogs.ViewSslCertificateDialog;
+import com.stoutner.privacybrowser.dialogs.WaitingForProxyDialog;
import com.stoutner.privacybrowser.fragments.WebViewTabFragment;
import com.stoutner.privacybrowser.helpers.AdHelper;
import com.stoutner.privacybrowser.helpers.BlocklistHelper;
import com.stoutner.privacybrowser.helpers.CheckPinnedMismatchHelper;
import com.stoutner.privacybrowser.helpers.DomainsDatabaseHelper;
import com.stoutner.privacybrowser.helpers.FileNameHelper;
-import com.stoutner.privacybrowser.helpers.OrbotProxyHelper;
+import com.stoutner.privacybrowser.helpers.ProxyHelper;
import com.stoutner.privacybrowser.views.NestedScrollWebView;
import java.io.ByteArrayInputStream;
StoragePermissionDialog.StoragePermissionDialogListener, UrlHistoryDialog.NavigateHistoryListener, WebViewTabFragment.NewTabListener {
// `orbotStatus` is public static so it can be accessed from `OrbotProxyHelper`. It is also used in `onCreate()`, `onResume()`, and `applyProxyThroughOrbot()`.
- public static String orbotStatus;
+ public static String orbotStatus = "unknown";
// The WebView pager adapter is accessed from `HttpAuthenticationDialog`, `PinnedMismatchDialog`, and `SslCertificateErrorDialog`. It is also used in `onCreate()`, `onResume()`, and `addTab()`.
public static WebViewPagerAdapter webViewPagerAdapter;
// The current WebView is used in `onCreate()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, `onNavigationItemSelected()`, `onRestart()`, `onCreateContextMenu()`, `findPreviousOnPage()`,
- // `findNextOnPage()`, `closeFindOnPage()`, `loadUrlFromTextBox()`, `onSslMismatchBack()`, `applyProxyThroughOrbot()`, and `applyDomainSettings()`.
+ // `findNextOnPage()`, `closeFindOnPage()`, `loadUrlFromTextBox()`, `onSslMismatchBack()`, `applyProxy()`, and `applyDomainSettings()`.
private NestedScrollWebView currentWebView;
// `customHeader` is used in `onCreate()`, `onOptionsItemSelected()`, `onCreateContextMenu()`, and `loadUrl()`.
private final Map<String, String> customHeaders = new HashMap<>();
- // The search URL is set in `applyProxyThroughOrbot()` and used in `onCreate()`, `onNewIntent()`, `loadURLFromTextBox()`, and `initializeWebView()`.
+ // The search URL is set in `applyAppSettings()` and used in `onNewIntent()`, `loadUrlFromTextBox()`, `initializeApp()`, and `initializeWebView()`.
private String searchURL;
// The options menu is set in `onCreateOptionsMenu()` and used in `onOptionsItemSelected()`, `updatePrivacyIcons()`, and `initializeWebView()`.
// `webViewDefaultUserAgent` is used in `onCreate()` and `onPrepareOptionsMenu()`.
private String webViewDefaultUserAgent;
- // `proxyThroughOrbot` is used in `onRestart()`, `onOptionsItemSelected()`, `applyAppSettings()`, and `applyProxyThroughOrbot()`.
- private boolean proxyThroughOrbot;
+ // The proxy mode is used in `onRestart()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, `applyAppSettings()`, and `applyProxy()`.
+ // It will be updated in `applyAppSettings()`, but it needs to be initialized here or the first run of `onPrepareOptionsMenu()` crashes.
+ private String proxyMode = ProxyHelper.NONE;
// The incognito mode is set in `applyAppSettings()` and used in `initializeWebView()`.
private boolean incognitoModeEnabled;
// `orbotStatusBroadcastReceiver` is used in `onCreate()` and `onDestroy()`.
private BroadcastReceiver orbotStatusBroadcastReceiver;
- // `waitingForOrbot` is used in `onCreate()`, `onResume()`, and `applyProxyThroughOrbot()`.
- private boolean waitingForOrbot;
+ // The waiting for proxy boolean is used in `onResume()`, `initializeApp()` and `applyProxy()`.
+ private boolean waitingForProxy = false;
// The action bar drawer toggle is initialized in `onCreate()` and used in `onResume()`.
private ActionBarDrawerToggle actionBarDrawerToggle;
addNewTab(url, true);
} else { // Load the URL in the current tab.
// Make it so.
- loadUrl(url);
+ loadUrl(currentWebView, url);
}
// Get a handle for the drawer layout.
// Run the default commands.
super.onRestart();
- // Make sure Orbot is running if Privacy Browser is proxying through Orbot.
- if (proxyThroughOrbot) {
- // Request Orbot to start. If Orbot is already running no hard will be caused by this request.
- Intent orbotIntent = new Intent("org.torproject.android.intent.action.START");
-
- // Send the intent to the Orbot package.
- orbotIntent.setPackage("org.torproject.android");
-
- // Make it so.
- sendBroadcast(orbotIntent);
- }
-
// Apply the app settings if returning from the Settings activity.
if (reapplyAppSettingsOnRestart) {
// Reset the reapply app settings on restart tracker.
// Load the URL on restart (used when loading a bookmark).
if (loadUrlOnRestart) {
// Load the specified URL.
- loadUrl(urlToLoadOnRestart);
+ loadUrl(currentWebView, urlToLoadOnRestart);
// Reset the load on restart tracker.
loadUrlOnRestart = false;
// Run the default commands.
super.onResume();
+ // Resume any WebViews.
for (int i = 0; i < webViewPagerAdapter.getCount(); i++) {
// Get the WebView tab fragment.
WebViewTabFragment webViewTabFragment = webViewPagerAdapter.getPageFragment(i);
}
}
- // Display a message to the user if waiting for Orbot.
- if (waitingForOrbot && !orbotStatus.equals("ON")) {
- // Disable the wide view port so that the waiting for Orbot text is displayed correctly.
- currentWebView.getSettings().setUseWideViewPort(false);
-
- // Load a waiting page. `null` specifies no encoding, which defaults to ASCII.
- currentWebView.loadData("<html><body><br/><center><h1>" + getString(R.string.waiting_for_orbot) + "</h1></center></body></html>", "text/html", null);
+ // Reapply the proxy settings if the system is using a proxy. This redisplays the appropriate alert dialog.
+ if (!proxyMode.equals(ProxyHelper.NONE)) {
+ applyProxy(false);
}
- if (displayingFullScreenVideo || inFullScreenBrowsingMode) {
+ // Reapply any system UI flags and the ad in the free flavor.
+ if (displayingFullScreenVideo || inFullScreenBrowsingMode) { // The system is displaying a website or a video in full screen mode.
// Get a handle for the root frame layouts.
FrameLayout rootFrameLayout = findViewById(R.id.root_framelayout);
*/
rootFrameLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
- } else if (BuildConfig.FLAVOR.contentEquals("free")) { // Resume the adView for the free flavor.
+ } else if (BuildConfig.FLAVOR.contentEquals("free")) { // The system in not in full screen mode.
// Resume the ad.
AdHelper.resumeAd(findViewById(R.id.adview));
}
@Override
public void onDestroy() {
- // Unregister the Orbot status broadcast receiver.
+ // Unregister the orbot status broadcast receiver.
this.unregisterReceiver(orbotStatusBroadcastReceiver);
// Close the bookmarks cursor and database.
MenuItem ultraListMenuItem = menu.findItem(R.id.ultralist);
MenuItem ultraPrivacyMenuItem = menu.findItem(R.id.ultraprivacy);
MenuItem blockAllThirdPartyRequestsMenuItem = menu.findItem(R.id.block_all_third_party_requests);
+ MenuItem proxyMenuItem = menu.findItem(R.id.proxy);
+ MenuItem userAgentMenuItem = menu.findItem(R.id.user_agent);
MenuItem fontSizeMenuItem = menu.findItem(R.id.font_size);
MenuItem swipeToRefreshMenuItem = menu.findItem(R.id.swipe_to_refresh);
MenuItem wideViewportMenuItem = menu.findItem(R.id.wide_viewport);
MenuItem displayImagesMenuItem = menu.findItem(R.id.display_images);
MenuItem nightModeMenuItem = menu.findItem(R.id.night_mode);
- MenuItem proxyThroughOrbotMenuItem = menu.findItem(R.id.proxy_through_orbot);
// Get a handle for the cookie manager.
CookieManager cookieManager = CookieManager.getInstance();
domStorageMenuItem.setEnabled(currentWebView.getSettings().getJavaScriptEnabled());
}
- // Set the status of the menu item checkboxes.
+ // Set the checked status of the first party cookies menu item.
firstPartyCookiesMenuItem.setChecked(cookieManager.acceptCookie());
- proxyThroughOrbotMenuItem.setChecked(proxyThroughOrbot);
// Enable Clear Cookies if there are any.
clearCookiesMenuItem.setEnabled(cookieManager.hasCookies());
// Disable Fanboy's Social Blocking List menu item if Fanboy's Annoyance List is checked.
fanboysSocialBlockingListMenuItem.setEnabled(!fanboysAnnoyanceListMenuItem.isChecked());
+ // Set the proxy title and check the applied proxy.
+ switch (proxyMode) {
+ case ProxyHelper.NONE:
+ // Set the proxy title.
+ proxyMenuItem.setTitle(getString(R.string.proxy) + " - " + getString(R.string.proxy_none));
+
+ // Check the proxy None radio button.
+ menu.findItem(R.id.proxy_none).setChecked(true);
+ break;
+
+ case ProxyHelper.TOR:
+ // Set the proxy title.
+ proxyMenuItem.setTitle(getString(R.string.proxy) + " - " + getString(R.string.proxy_tor));
+
+ // Check the proxy Tor radio button.
+ menu.findItem(R.id.proxy_tor).setChecked(true);
+ break;
+
+ case ProxyHelper.I2P:
+ // Set the proxy title.
+ proxyMenuItem.setTitle(getString(R.string.proxy) + " - " + getString(R.string.proxy_i2p));
+
+ // Check the proxy I2P radio button.
+ menu.findItem(R.id.proxy_i2p).setChecked(true);
+ break;
+
+ case ProxyHelper.CUSTOM:
+ // Set the proxy title.
+ proxyMenuItem.setTitle(getString(R.string.proxy) + " - " + getString(R.string.proxy_custom));
+
+ // Check the proxy Custom radio button.
+ menu.findItem(R.id.proxy_custom).setChecked(true);
+ break;
+ }
+
// Select the current user agent menu item. A switch statement cannot be used because the user agents are not compile time constants.
if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[0])) { // Privacy Browser.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_privacy_browser));
+
+ // Select the Privacy Browser radio box.
menu.findItem(R.id.user_agent_privacy_browser).setChecked(true);
} else if (currentUserAgent.equals(webViewDefaultUserAgent)) { // WebView Default.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_webview_default));
+
+ // Select the WebView Default radio box.
menu.findItem(R.id.user_agent_webview_default).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[2])) { // Firefox on Android.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_firefox_on_android));
+
+ // Select the Firefox on Android radio box.
menu.findItem(R.id.user_agent_firefox_on_android).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[3])) { // Chrome on Android.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_chrome_on_android));
+
+ // Select the Chrome on Android radio box.
menu.findItem(R.id.user_agent_chrome_on_android).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[4])) { // Safari on iOS.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_safari_on_ios));
+
+ // Select the Safari on iOS radio box.
menu.findItem(R.id.user_agent_safari_on_ios).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[5])) { // Firefox on Linux.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_firefox_on_linux));
+
+ // Select the Firefox on Linux radio box.
menu.findItem(R.id.user_agent_firefox_on_linux).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[6])) { // Chromium on Linux.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_chromium_on_linux));
+
+ // Select the Chromium on Linux radio box.
menu.findItem(R.id.user_agent_chromium_on_linux).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[7])) { // Firefox on Windows.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_firefox_on_windows));
+
+ // Select the Firefox on Windows radio box.
menu.findItem(R.id.user_agent_firefox_on_windows).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[8])) { // Chrome on Windows.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_chrome_on_windows));
+
+ // Select the Chrome on Windows radio box.
menu.findItem(R.id.user_agent_chrome_on_windows).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[9])) { // Edge on Windows.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_edge_on_windows));
+
+ // Select the Edge on Windows radio box.
menu.findItem(R.id.user_agent_edge_on_windows).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[10])) { // Internet Explorer on Windows.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_internet_explorer_on_windows));
+
+ // Select the Internet on Windows radio box.
menu.findItem(R.id.user_agent_internet_explorer_on_windows).setChecked(true);
} else if (currentUserAgent.equals(getResources().getStringArray(R.array.user_agent_data)[11])) { // Safari on macOS.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_safari_on_macos));
+
+ // Select the Safari on macOS radio box.
menu.findItem(R.id.user_agent_safari_on_macos).setChecked(true);
} else { // Custom user agent.
+ // Update the user agent menu item title.
+ userAgentMenuItem.setTitle(getString(R.string.user_agent) + " - " + getString(R.string.user_agent_custom));
+
+ // Select the Custom radio box.
menu.findItem(R.id.user_agent_custom).setChecked(true);
}
// Consume the event.
return true;
+ case R.id.proxy_none:
+ // Update the proxy mode.
+ proxyMode = ProxyHelper.NONE;
+
+ // Apply the proxy mode.
+ applyProxy(true);
+
+ // Consume the event.
+ return true;
+
+ case R.id.proxy_tor:
+ // Update the proxy mode.
+ proxyMode = ProxyHelper.TOR;
+
+ // Apply the proxy mode.
+ applyProxy(true);
+
+ // Consume the event.
+ return true;
+
+ case R.id.proxy_i2p:
+ // Update the proxy mode.
+ proxyMode = ProxyHelper.I2P;
+
+ // Apply the proxy mode.
+ applyProxy(true);
+
+ // Consume the event.
+ return true;
+
+ case R.id.proxy_custom:
+ // Update the proxy mode.
+ proxyMode = ProxyHelper.CUSTOM;
+
+ // Apply the proxy mode.
+ applyProxy(true);
+
+ // Consume the event.
+ return true;
+
case R.id.user_agent_privacy_browser:
// Update the user agent.
currentWebView.getSettings().setUserAgentString(getResources().getStringArray(R.array.user_agent_data)[0]);
// Consume the event.
return true;
- case R.id.proxy_through_orbot:
- // Toggle the proxy through Orbot variable.
- proxyThroughOrbot = !proxyThroughOrbot;
-
- // Apply the proxy through Orbot settings.
- applyProxyThroughOrbot(true);
-
- // Consume the event.
- return true;
-
case R.id.refresh:
if (menuItem.getTitle().equals(getString(R.string.refresh))) { // The refresh button was pushed.
// Reload the current WebView.
break;
case R.id.home:
- // Select the homepage based on the proxy through Orbot status.
- if (proxyThroughOrbot) {
- // Load the Tor homepage.
- loadUrl(sharedPreferences.getString("tor_homepage", getString(R.string.tor_homepage_default_value)));
- } else {
- // Load the normal homepage.
- loadUrl(sharedPreferences.getString("homepage", getString(R.string.homepage_default_value)));
- }
+ // Load the homepage.
+ loadUrl(currentWebView, sharedPreferences.getString("homepage", getString(R.string.homepage_default_value)));
break;
case R.id.back:
// Add a View Image entry.
menu.add(R.string.view_image).setOnMenuItemClickListener(item -> {
// Load the image in the current tab.
- loadUrl(imageUrl);
+ loadUrl(currentWebView, imageUrl);
// Consume the event.
return true;
// Add a View Image entry.
menu.add(R.string.view_image).setOnMenuItemClickListener((MenuItem item) -> {
// View the image in the current tab.
- loadUrl(imageUrl);
+ loadUrl(currentWebView, imageUrl);
// Consume the event.
return true;
urlEditText.clearFocus();
// Make it so.
- loadUrl(url);
+ loadUrl(currentWebView, url);
}
- private void loadUrl(String url) {
+ private void loadUrl(NestedScrollWebView nestedScrollWebView, String url) {
// Sanitize the URL.
url = sanitizeUrl(url);
// Apply the domain settings.
- applyDomainSettings(currentWebView, url, true, false);
+ applyDomainSettings(nestedScrollWebView, url, true, false);
// Load the URL.
- currentWebView.loadUrl(url, customHeaders);
+ nestedScrollWebView.loadUrl(url, customHeaders);
}
public void findPreviousOnPage(View view) {
sanitizeGoogleAnalytics = sharedPreferences.getBoolean("google_analytics", true);
sanitizeFacebookClickIds = sharedPreferences.getBoolean("facebook_click_ids", true);
sanitizeTwitterAmpRedirects = sharedPreferences.getBoolean("twitter_amp_redirects", true);
- proxyThroughOrbot = sharedPreferences.getBoolean("proxy_through_orbot", false);
+ proxyMode = sharedPreferences.getString("proxy", getString(R.string.proxy_default_value));
fullScreenBrowsingModeEnabled = sharedPreferences.getBoolean("full_screen_browsing_mode", false);
hideAppBar = sharedPreferences.getBoolean("hide_app_bar", true);
scrollAppBar = sharedPreferences.getBoolean("scroll_app_bar", true);
+ // Get the search string.
+ String searchString = sharedPreferences.getString("search", getString(R.string.search_default_value));
+
+ // Set the search string.
+ if (searchString.equals("Custom URL")) { // A custom search string is used.
+ searchURL = sharedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value));
+ } else { // A custom search string is not used.
+ searchURL = searchString;
+ }
+
// Get handles for the views that need to be modified.
FrameLayout rootFrameLayout = findViewById(R.id.root_framelayout);
AppBarLayout appBarLayout = findViewById(R.id.appbar_layout);
// Remove the incorrect lint warning below that the action bar might be null.
assert actionBar != null;
- // Apply the proxy through Orbot settings.
- applyProxyThroughOrbot(false);
+ // Apply the proxy.
+ applyProxy(false);
// Set Do Not Track status.
if (doNotTrackEnabled) {
}
});
- // Initialize the Orbot status and the waiting for Orbot trackers.
- orbotStatus = "unknown";
- waitingForOrbot = false;
-
- // Create an Orbot status `BroadcastReceiver`.
+ // Create an Orbot status broadcast receiver.
orbotStatusBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Store the content of the status message in `orbotStatus`.
orbotStatus = intent.getStringExtra("org.torproject.android.intent.extra.STATUS");
- // If Privacy Browser is waiting on Orbot, load the website now that Orbot is connected.
- if ((orbotStatus != null) && orbotStatus.equals("ON") && waitingForOrbot) {
- // Reset the waiting for Orbot status.
- waitingForOrbot = false;
+ // If Privacy Browser is waiting on the proxy, load the website now that Orbot is connected.
+ if ((orbotStatus != null) && orbotStatus.equals("ON") && waitingForProxy) {
+ // Reset the waiting for proxy status.
+ waitingForProxy = false;
- // Get the intent that started the app.
- Intent launchingIntent = getIntent();
+ // Get a handle for the waiting for proxy dialog.
+ DialogFragment waitingForProxyDialogFragment = (DialogFragment) getSupportFragmentManager().findFragmentByTag(getString(R.string.waiting_for_proxy_dialog));
- // Get the information from the intent.
- String launchingIntentAction = launchingIntent.getAction();
- Uri launchingIntentUriData = launchingIntent.getData();
+ // Dismiss the waiting for proxy dialog if it is displayed.
+ if (waitingForProxyDialogFragment != null) {
+ waitingForProxyDialogFragment.dismiss();
+ }
- // If the intent action is a web search, perform the search.
- if ((launchingIntentAction != null) && launchingIntentAction.equals(Intent.ACTION_WEB_SEARCH)) {
- // Create an encoded URL string.
- String encodedUrlString;
+ // Load any URLs that are waiting for the proxy.
+ for (int i = 0; i < webViewPagerAdapter.getCount(); i++) {
+ // Get the WebView tab fragment.
+ WebViewTabFragment webViewTabFragment = webViewPagerAdapter.getPageFragment(i);
- // Sanitize the search input and convert it to a search.
- try {
- encodedUrlString = URLEncoder.encode(launchingIntent.getStringExtra(SearchManager.QUERY), "UTF-8");
- } catch (UnsupportedEncodingException exception) {
- encodedUrlString = "";
- }
+ // Get the fragment view.
+ View fragmentView = webViewTabFragment.getView();
- // Load the completed search URL.
- loadUrl(searchURL + encodedUrlString);
- } else if (launchingIntentUriData != null){ // Check to see if the intent contains a new URL.
- // Load the URL from the intent.
- loadUrl(launchingIntentUriData.toString());
- } else { // The is no URL in the intent.
- // Select the homepage based on the proxy through Orbot status.
- if (proxyThroughOrbot) {
- // Load the Tor homepage.
- loadUrl(sharedPreferences.getString("tor_homepage", getString(R.string.tor_homepage_default_value)));
- } else {
- // Load the normal homepage.
- loadUrl(sharedPreferences.getString("homepage", getString(R.string.homepage_default_value)));
+ // Only process the WebViews if they exist.
+ if (fragmentView != null) {
+ // Get the nested scroll WebView from the tab fragment.
+ NestedScrollWebView nestedScrollWebView = fragmentView.findViewById(R.id.nestedscroll_webview);
+
+ // Get the waiting for proxy URL string.
+ String waitingForProxyUrlString = nestedScrollWebView.getWaitingForProxyUrlString();
+
+ // Load the pending URL if it exists.
+ if (!waitingForProxyUrlString.isEmpty()) {
+ // Load the URL.
+ loadUrl(nestedScrollWebView, waitingForProxyUrlString);
+
+ // Reset the waiting for proxy URL string.
+ nestedScrollWebView.resetWaitingForProxyUrlString();
+ }
}
}
}
}
};
- // Register `orbotStatusBroadcastReceiver` on `this` context.
+ // Register the Orbot status broadcast receiver on `this` context.
this.registerReceiver(orbotStatusBroadcastReceiver, new IntentFilter("org.torproject.android.intent.action.STATUS"));
// Get handles for views that need to be modified.
loadBookmarksFolder();
} else { // The selected bookmark is not a folder.
// Load the bookmark URL.
- loadUrl(bookmarkCursor.getString(bookmarkCursor.getColumnIndex(BookmarksDatabaseHelper.BOOKMARK_URL)));
+ loadUrl(currentWebView, bookmarkCursor.getString(bookmarkCursor.getColumnIndex(BookmarksDatabaseHelper.BOOKMARK_URL)));
// Close the bookmarks drawer.
drawerLayout.closeDrawer(GravityCompat.END);
return !nestedScrollWebView.getSettings().getUserAgentString().equals(initialUserAgent);
}
- private void applyProxyThroughOrbot(boolean reloadWebsite) {
+ private void applyProxy(boolean reloadWebViews) {
// Get a handle for the shared preferences.
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- // Get the search and theme preferences.
- String torSearchString = sharedPreferences.getString("tor_search", getString(R.string.tor_search_default_value));
- String torSearchCustomUrlString = sharedPreferences.getString("tor_search_custom_url", getString(R.string.tor_search_custom_url_default_value));
- String searchString = sharedPreferences.getString("search", getString(R.string.search_default_value));
- String searchCustomUrlString = sharedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value));
+ // Get the theme preferences.
boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false);
// Get a handle for the app bar layout.
AppBarLayout appBarLayout = findViewById(R.id.appbar_layout);
- // Set the homepage, search, and proxy options.
- if (proxyThroughOrbot) { // Set the Tor options.
- // Set the search URL.
- if (torSearchString.equals("Custom URL")) { // Get the custom URL string.
- searchURL = torSearchCustomUrlString;
- } else { // Use the string from the pre-built list.
- searchURL = torSearchString;
- }
+ // Set the proxy according to the mode. `this` refers to the current activity where an alert dialog might be displayed.
+ ProxyHelper.setProxy(getApplicationContext(), proxyMode);
- // Set the proxy. `this` refers to the current activity where an `AlertDialog` might be displayed.
- OrbotProxyHelper.setProxy(getApplicationContext(), this, "localhost", "8118");
+ // Reset the waiting for proxy tracker.
+ waitingForProxy = false;
- // Set the app bar background to indicate proxying through Orbot is enabled.
- if (darkTheme) {
- appBarLayout.setBackgroundResource(R.color.dark_blue_30);
- } else {
- appBarLayout.setBackgroundResource(R.color.blue_50);
- }
+ // Update the user interface and reload the WebViews is requested.
+ switch (proxyMode) {
+ case ProxyHelper.NONE:
+ // Set the default app bar layout background.
+ if (darkTheme) {
+ appBarLayout.setBackgroundResource(R.color.gray_900);
+ } else {
+ appBarLayout.setBackgroundResource(R.color.gray_100);
+ }
+ break;
- // Check to see if Orbot is ready.
- if (!orbotStatus.equals("ON")) { // Orbot is not ready.
- // Set `waitingForOrbot`.
- waitingForOrbot = true;
+ case ProxyHelper.TOR:
+ // Set the app bar background to indicate proxying through Orbot is enabled.
+ if (darkTheme) {
+ appBarLayout.setBackgroundResource(R.color.dark_blue_30);
+ } else {
+ appBarLayout.setBackgroundResource(R.color.blue_50);
+ }
- // Disable the wide view port so that the waiting for Orbot text is displayed correctly.
- currentWebView.getSettings().setUseWideViewPort(false);
+ // Check to see if Orbot is installed.
+ try {
+ // Get the package manager.
+ PackageManager packageManager = getPackageManager();
- // Load a waiting page. `null` specifies no encoding, which defaults to ASCII.
- currentWebView.loadData("<html><body><br/><center><h1>" + getString(R.string.waiting_for_orbot) + "</h1></center></body></html>", "text/html", null);
- } else if (reloadWebsite) { // Orbot is ready and the website should be reloaded.
- // Reload the website.
- currentWebView.reload();
- }
- } else { // Set the non-Tor options.
- // Set the search URL.
- if (searchString.equals("Custom URL")) { // Get the custom URL string.
- searchURL = searchCustomUrlString;
- } else { // Use the string from the pre-built list.
- searchURL = searchString;
- }
+ // Check to see if Orbot is in the list. This will throw an error and drop to the catch section if it isn't installed.
+ packageManager.getPackageInfo("org.torproject.android", 0);
- // Reset the proxy to default. The host is `""` and the port is `"0"`.
- OrbotProxyHelper.setProxy(getApplicationContext(), this, "", "0");
+ // Check to see if the proxy is ready.
+ if (!orbotStatus.equals("ON")) { // Orbot is not ready.
+ // Set the waiting for proxy status.
+ waitingForProxy = true;
- // Set the default app bar layout background.
- if (darkTheme) {
- appBarLayout.setBackgroundResource(R.color.gray_900);
- } else {
- appBarLayout.setBackgroundResource(R.color.gray_100);
- }
+ // Show the waiting for proxy dialog if it isn't already displayed.
+ if (getSupportFragmentManager().findFragmentByTag(getString(R.string.waiting_for_proxy_dialog)) == null) {
+ // Get a handle for the waiting for proxy alert dialog.
+ DialogFragment waitingForProxyDialogFragment = new WaitingForProxyDialog();
+
+ // Display the waiting for proxy alert dialog.
+ waitingForProxyDialogFragment.show(getSupportFragmentManager(), getString(R.string.waiting_for_proxy_dialog));
+ }
+ }
+ } catch (PackageManager.NameNotFoundException exception) { // Orbot is not installed.
+ // Show the Orbot not installed dialog if it is not already displayed.
+ if (getSupportFragmentManager().findFragmentByTag(getString(R.string.proxy_not_installed_dialog)) == null) {
+ // Get a handle for the Orbot not installed alert dialog.
+ DialogFragment orbotNotInstalledDialogFragment = ProxyNotInstalledDialog.displayDialog(proxyMode);
+
+ // Display the Orbot not installed alert dialog.
+ orbotNotInstalledDialogFragment.show(getSupportFragmentManager(), getString(R.string.proxy_not_installed_dialog));
+ }
+ }
+ break;
+
+ case ProxyHelper.I2P:
+ // Set the app bar background to indicate proxying through Orbot is enabled.
+ if (darkTheme) {
+ appBarLayout.setBackgroundResource(R.color.dark_blue_30);
+ } else {
+ appBarLayout.setBackgroundResource(R.color.blue_50);
+ }
+
+ // Check to see if I2P is installed.
+ try {
+ // Get the package manager.
+ PackageManager packageManager = getPackageManager();
+
+ // Check to see if I2P is in the list. This will throw an error and drop to the catch section if it isn't installed.
+ packageManager.getPackageInfo("org.torproject.android", 0);
+ } catch (PackageManager.NameNotFoundException exception) { // I2P is not installed.
+ // Sow the I2P not installed dialog if it is not already displayed.
+ if (getSupportFragmentManager().findFragmentByTag(getString(R.string.proxy_not_installed_dialog)) == null) {
+ // Get a handle for the waiting for proxy alert dialog.
+ DialogFragment i2pNotInstalledDialogFragment = ProxyNotInstalledDialog.displayDialog(proxyMode);
+
+ // Display the I2P not installed alert dialog.
+ i2pNotInstalledDialogFragment.show(getSupportFragmentManager(), getString(R.string.proxy_not_installed_dialog));
+ }
+ }
+ break;
- // Reset `waitingForOrbot.
- waitingForOrbot = false;
+ case ProxyHelper.CUSTOM:
+ // Set the app bar background to indicate proxying through Orbot is enabled.
+ if (darkTheme) {
+ appBarLayout.setBackgroundResource(R.color.dark_blue_30);
+ } else {
+ appBarLayout.setBackgroundResource(R.color.blue_50);
+ }
+ break;
+ }
- // Reload the WebViews if requested.
- if (reloadWebsite) {
- // Reload the WebViews.
- for (int i = 0; i < webViewPagerAdapter.getCount(); i++) {
- // Get the WebView tab fragment.
- WebViewTabFragment webViewTabFragment = webViewPagerAdapter.getPageFragment(i);
+ // Reload the WebViews if requested and not waiting for the proxy.
+ if (reloadWebViews && !waitingForProxy) {
+ // Reload the WebViews.
+ for (int i = 0; i < webViewPagerAdapter.getCount(); i++) {
+ // Get the WebView tab fragment.
+ WebViewTabFragment webViewTabFragment = webViewPagerAdapter.getPageFragment(i);
- // Get the fragment view.
- View fragmentView = webViewTabFragment.getView();
+ // Get the fragment view.
+ View fragmentView = webViewTabFragment.getView();
- // Only reload the WebViews if they exist.
- if (fragmentView != null) {
- // Get the nested scroll WebView from the tab fragment.
- NestedScrollWebView nestedScrollWebView = fragmentView.findViewById(R.id.nestedscroll_webview);
+ // Only reload the WebViews if they exist.
+ if (fragmentView != null) {
+ // Get the nested scroll WebView from the tab fragment.
+ NestedScrollWebView nestedScrollWebView = fragmentView.findViewById(R.id.nestedscroll_webview);
- // Reload the WebView.
- nestedScrollWebView.reload();
- }
+ // Reload the WebView.
+ nestedScrollWebView.reload();
}
}
}
// Hide the keyboard.
inputMethodManager.hideSoftInputFromWindow(nestedScrollWebView.getWindowToken(), 0);
- // Check to see if Privacy Browser is waiting on Orbot.
- if (!waitingForOrbot) { // Process the URL.
- // Get the current page position.
- int currentPagePosition = webViewPagerAdapter.getPositionForId(nestedScrollWebView.getWebViewFragmentId());
+ // Get the current page position.
+ int currentPagePosition = webViewPagerAdapter.getPositionForId(nestedScrollWebView.getWebViewFragmentId());
- // Update the URL text bar if the page is currently selected.
- if (tabLayout.getSelectedTabPosition() == currentPagePosition) {
- // Clear the focus from the URL edit text.
- urlEditText.clearFocus();
+ // Update the URL text bar if the page is currently selected.
+ if (tabLayout.getSelectedTabPosition() == currentPagePosition) {
+ // Clear the focus from the URL edit text.
+ urlEditText.clearFocus();
- // Display the formatted URL text.
- urlEditText.setText(url);
+ // Display the formatted URL text.
+ urlEditText.setText(url);
- // Apply text highlighting to `urlTextBox`.
- highlightUrlText();
- }
+ // Apply text highlighting to `urlTextBox`.
+ highlightUrlText();
+ }
- // Reset the list of host IP addresses.
- nestedScrollWebView.clearCurrentIpAddresses();
+ // Reset the list of host IP addresses.
+ nestedScrollWebView.clearCurrentIpAddresses();
- // Get a URI for the current URL.
- Uri currentUri = Uri.parse(url);
+ // Get a URI for the current URL.
+ Uri currentUri = Uri.parse(url);
- // Get the IP addresses for the host.
- new GetHostIpAddresses(activity, getSupportFragmentManager(), nestedScrollWebView).execute(currentUri.getHost());
+ // Get the IP addresses for the host.
+ new GetHostIpAddresses(activity, getSupportFragmentManager(), nestedScrollWebView).execute(currentUri.getHost());
- // Replace Refresh with Stop if the options menu has been created. (The first WebView typically begins loading before the menu items are instantiated.)
- if (optionsMenu != null) {
- // Get a handle for the refresh menu item.
- MenuItem refreshMenuItem = optionsMenu.findItem(R.id.refresh);
+ // Replace Refresh with Stop if the options menu has been created. (The first WebView typically begins loading before the menu items are instantiated.)
+ if (optionsMenu != null) {
+ // Get a handle for the refresh menu item.
+ MenuItem refreshMenuItem = optionsMenu.findItem(R.id.refresh);
- // Set the title.
- refreshMenuItem.setTitle(R.string.stop);
+ // Set the title.
+ refreshMenuItem.setTitle(R.string.stop);
- // Get the app bar and theme preferences.
- boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean("display_additional_app_bar_icons", false);
+ // Get the app bar and theme preferences.
+ boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean("display_additional_app_bar_icons", false);
- // If the icon is displayed in the AppBar, set it according to the theme.
- if (displayAdditionalAppBarIcons) {
- if (darkTheme) {
- refreshMenuItem.setIcon(R.drawable.close_dark);
- } else {
- refreshMenuItem.setIcon(R.drawable.close_light);
- }
+ // If the icon is displayed in the AppBar, set it according to the theme.
+ if (displayAdditionalAppBarIcons) {
+ if (darkTheme) {
+ refreshMenuItem.setIcon(R.drawable.close_dark);
+ } else {
+ refreshMenuItem.setIcon(R.drawable.close_light);
}
}
}
}
}
- // Update the URL text box and apply domain settings if not waiting on Orbot.
- if (!waitingForOrbot) {
- // Get the current page position.
- int currentPagePosition = webViewPagerAdapter.getPositionForId(nestedScrollWebView.getWebViewFragmentId());
+ // Get the current page position.
+ int currentPagePosition = webViewPagerAdapter.getPositionForId(nestedScrollWebView.getWebViewFragmentId());
- // Check the current website information against any pinned domain information if the current IP addresses have been loaded.
- if ((nestedScrollWebView.hasPinnedSslCertificate() || nestedScrollWebView.hasPinnedIpAddresses()) && nestedScrollWebView.hasCurrentIpAddresses() &&
- !nestedScrollWebView.ignorePinnedDomainInformation()) {
- CheckPinnedMismatchHelper.checkPinnedMismatch(getSupportFragmentManager(), nestedScrollWebView);
- }
+ // Check the current website information against any pinned domain information if the current IP addresses have been loaded.
+ if ((nestedScrollWebView.hasPinnedSslCertificate() || nestedScrollWebView.hasPinnedIpAddresses()) && nestedScrollWebView.hasCurrentIpAddresses() &&
+ !nestedScrollWebView.ignorePinnedDomainInformation()) {
+ CheckPinnedMismatchHelper.checkPinnedMismatch(getSupportFragmentManager(), nestedScrollWebView);
+ }
- // Get the current URL from the nested scroll WebView. This is more accurate than using the URL passed into the method, which is sometimes not the final one.
- String currentUrl = nestedScrollWebView.getUrl();
+ // Get the current URL from the nested scroll WebView. This is more accurate than using the URL passed into the method, which is sometimes not the final one.
+ String currentUrl = nestedScrollWebView.getUrl();
- // Get the current tab.
- TabLayout.Tab tab = tabLayout.getTabAt(currentPagePosition);
+ // Get the current tab.
+ TabLayout.Tab tab = tabLayout.getTabAt(currentPagePosition);
- // Update the URL text bar if the page is currently selected and the user is not currently typing in the URL edit text.
- // Crash records show that, in some crazy way, it is possible for the current URL to be blank at this point.
- // Probably some sort of race condition when Privacy Browser is being resumed.
- if ((tabLayout.getSelectedTabPosition() == currentPagePosition) && !urlEditText.hasFocus() && (currentUrl != null)) {
- // Check to see if the URL is `about:blank`.
- if (currentUrl.equals("about:blank")) { // The WebView is blank.
- // Display the hint in the URL edit text.
- urlEditText.setText("");
+ // Update the URL text bar if the page is currently selected and the user is not currently typing in the URL edit text.
+ // Crash records show that, in some crazy way, it is possible for the current URL to be blank at this point.
+ // Probably some sort of race condition when Privacy Browser is being resumed.
+ if ((tabLayout.getSelectedTabPosition() == currentPagePosition) && !urlEditText.hasFocus() && (currentUrl != null)) {
+ // Check to see if the URL is `about:blank`.
+ if (currentUrl.equals("about:blank")) { // The WebView is blank.
+ // Display the hint in the URL edit text.
+ urlEditText.setText("");
- // Request focus for the URL text box.
- urlEditText.requestFocus();
+ // Request focus for the URL text box.
+ urlEditText.requestFocus();
- // Display the keyboard.
- inputMethodManager.showSoftInput(urlEditText, 0);
+ // Display the keyboard.
+ inputMethodManager.showSoftInput(urlEditText, 0);
- // Apply the domain settings. This clears any settings from the previous domain.
- applyDomainSettings(nestedScrollWebView, "", true, false);
+ // Apply the domain settings. This clears any settings from the previous domain.
+ applyDomainSettings(nestedScrollWebView, "", true, false);
- // Only populate the title text view if the tab has been fully created.
- if (tab != null) {
- // Get the custom view from the tab.
- View tabView = tab.getCustomView();
+ // Only populate the title text view if the tab has been fully created.
+ if (tab != null) {
+ // Get the custom view from the tab.
+ View tabView = tab.getCustomView();
- // Remove the incorrect warning below that the current tab view might be null.
- assert tabView != null;
+ // Remove the incorrect warning below that the current tab view might be null.
+ assert tabView != null;
- // Get the title text view from the tab.
- TextView tabTitleTextView = tabView.findViewById(R.id.title_textview);
+ // Get the title text view from the tab.
+ TextView tabTitleTextView = tabView.findViewById(R.id.title_textview);
- // Set the title as the tab text.
- tabTitleTextView.setText(R.string.new_tab);
- }
- } else { // The WebView has loaded a webpage.
- // Update the URL edit text if it is not currently being edited.
- if (!urlEditText.hasFocus()) {
- // Sanitize the current URL. This removes unwanted URL elements that were added by redirects, so that they won't be included if the URL is shared.
- String sanitizedUrl = sanitizeUrl(currentUrl);
+ // Set the title as the tab text.
+ tabTitleTextView.setText(R.string.new_tab);
+ }
+ } else { // The WebView has loaded a webpage.
+ // Update the URL edit text if it is not currently being edited.
+ if (!urlEditText.hasFocus()) {
+ // Sanitize the current URL. This removes unwanted URL elements that were added by redirects, so that they won't be included if the URL is shared.
+ String sanitizedUrl = sanitizeUrl(currentUrl);
- // Display the final URL. Getting the URL from the WebView instead of using the one provided by `onPageFinished()` makes websites like YouTube function correctly.
- urlEditText.setText(sanitizedUrl);
+ // Display the final URL. Getting the URL from the WebView instead of using the one provided by `onPageFinished()` makes websites like YouTube function correctly.
+ urlEditText.setText(sanitizedUrl);
- // Apply text highlighting to the URL.
- highlightUrlText();
- }
+ // Apply text highlighting to the URL.
+ highlightUrlText();
+ }
- // Only populate the title text view if the tab has been fully created.
- if (tab != null) {
- // Get the custom view from the tab.
- View tabView = tab.getCustomView();
+ // Only populate the title text view if the tab has been fully created.
+ if (tab != null) {
+ // Get the custom view from the tab.
+ View tabView = tab.getCustomView();
- // Remove the incorrect warning below that the current tab view might be null.
- assert tabView != null;
+ // Remove the incorrect warning below that the current tab view might be null.
+ assert tabView != null;
- // Get the title text view from the tab.
- TextView tabTitleTextView = tabView.findViewById(R.id.title_textview);
+ // Get the title text view from the tab.
+ TextView tabTitleTextView = tabView.findViewById(R.id.title_textview);
- // Set the title as the tab text. Sometimes `onReceivedTitle()` is not called, especially when navigating history.
- tabTitleTextView.setText(nestedScrollWebView.getTitle());
- }
+ // Set the title as the tab text. Sometimes `onReceivedTitle()` is not called, especially when navigating history.
+ tabTitleTextView.setText(nestedScrollWebView.getTitle());
}
}
}
// Apply the app settings from the shared preferences.
applyAppSettings();
- // Load the website if not waiting for Orbot to connect.
- if (!waitingForOrbot) {
- // Get the intent that started the app.
- Intent launchingIntent = getIntent();
+ // Initialize the URL to load string.
+ String urlToLoadString;
- // Get the information from the intent.
- String launchingIntentAction = launchingIntent.getAction();
- Uri launchingIntentUriData = launchingIntent.getData();
+ // Get the intent that started the app.
+ Intent launchingIntent = getIntent();
- // If the intent action is a web search, perform the search.
- if ((launchingIntentAction != null) && launchingIntentAction.equals(Intent.ACTION_WEB_SEARCH)) {
- // Create an encoded URL string.
- String encodedUrlString;
+ // Get the information from the intent.
+ String launchingIntentAction = launchingIntent.getAction();
+ Uri launchingIntentUriData = launchingIntent.getData();
- // Sanitize the search input and convert it to a search.
- try {
- encodedUrlString = URLEncoder.encode(launchingIntent.getStringExtra(SearchManager.QUERY), "UTF-8");
- } catch (UnsupportedEncodingException exception) {
- encodedUrlString = "";
- }
+ // Parse the launching intent URL.
+ if ((launchingIntentAction != null) && launchingIntentAction.equals(Intent.ACTION_WEB_SEARCH)) { // The intent contains a search string.
+ // Create an encoded URL string.
+ String encodedUrlString;
- // Load the completed search URL.
- loadUrl(searchURL + encodedUrlString);
- } else if (launchingIntentUriData != null){ // Check to see if the intent contains a new URL.
- // Load the URL from the intent.
- loadUrl(launchingIntentUriData.toString());
- } else { // The is no URL in the intent.
- // Select the homepage based on the proxy through Orbot status.
- if (proxyThroughOrbot) {
- // Load the Tor homepage.
- loadUrl(sharedPreferences.getString("tor_homepage", getString(R.string.tor_homepage_default_value)));
- } else {
- // Load the normal homepage.
- loadUrl(sharedPreferences.getString("homepage", getString(R.string.homepage_default_value)));
- }
+ // Sanitize the search input and convert it to a search.
+ try {
+ encodedUrlString = URLEncoder.encode(launchingIntent.getStringExtra(SearchManager.QUERY), "UTF-8");
+ } catch (UnsupportedEncodingException exception) {
+ encodedUrlString = "";
}
+
+ // Store the web search as the URL to load.
+ urlToLoadString = searchURL + encodedUrlString;
+ } else if (launchingIntentUriData != null){ // The intent contains a URL.
+ // Store the URL.
+ urlToLoadString = launchingIntentUriData.toString();
+ } else { // The is no URL in the intent.
+ // Store the homepage to be loaded.
+ urlToLoadString = sharedPreferences.getString("homepage", getString(R.string.homepage_default_value));
+ }
+
+ // Load the website if not waiting for the proxy.
+ if (waitingForProxy) { // Store the URL to be loaded in the Nested Scroll WebView.
+ nestedScrollWebView.setWaitingForProxyUrlString(urlToLoadString);
+ } else { // Load the URL.
+ loadUrl(nestedScrollWebView, urlToLoadString);
}
} else { // This is not the first tab.
// Apply the domain settings.
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar; // The AndroidX toolbar must be used until the minimum API is >= 21.
}
// Get the source using an AsyncTask if the URL begins with `http`.
- if (currentUrl.startsWith("http")) {
+ if ((currentUrl != null) && currentUrl.startsWith("http")) {
new GetSource(this, userAgent).execute(currentUrl);
}
}
}
@Override
- public boolean onOptionsItemSelected(MenuItem menuItem) {
+ public boolean onOptionsItemSelected(@NonNull MenuItem menuItem) {
// Get a handle for the about alert dialog.
DialogFragment aboutDialogFragment = new AboutViewSourceDialog();
import android.content.Context;
+import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
public AboutPagerAdapter(FragmentManager fragmentManager, Context context, String[] blocklistVersions) {
// Run the default commands.
- super(fragmentManager);
+ super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
// Store the context in a class variable.
this.context = context;
public CharSequence getPageTitle(int tab) {
switch (tab) {
case 0:
- return context.getResources().getString(R.string.version);
+ return context.getString(R.string.version);
case 1:
- return context.getResources().getString(R.string.permissions);
+ return context.getString(R.string.permissions);
case 2:
- return context.getResources().getString(R.string.privacy_policy);
+ return context.getString(R.string.privacy_policy);
case 3:
- return context.getResources().getString(R.string.changelog);
+ return context.getString(R.string.changelog);
case 4:
- return context.getResources().getString(R.string.licenses);
+ return context.getString(R.string.licenses);
case 5:
- return context.getResources().getString(R.string.contributors);
+ return context.getString(R.string.contributors);
case 6:
- return context.getResources().getString(R.string.links);
+ return context.getString(R.string.links);
default:
return "";
}
@Override
+ @NonNull
// Setup each tab.
public Fragment getItem(int tabNumber) {
return AboutTabFragment.createTab(tabNumber, blocklistVersions);
--- /dev/null
+/*
+ * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ *
+ * Privacy Browser is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Browser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.stoutner.privacybrowser.adapters;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+
+import com.stoutner.privacybrowser.R;
+import com.stoutner.privacybrowser.fragments.GuideTabFragment;
+
+public class GuidePagerAdapter extends FragmentPagerAdapter {
+ // Define the class context variable.
+ private Context context;
+
+ public GuidePagerAdapter(FragmentManager fragmentManager, Context context) {
+ // Run the default commands.
+ super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
+
+ // Store the context in a class variable.
+ this.context = context;
+ }
+
+ @Override
+ // Get the count of the number of tabs.
+ public int getCount() {
+ return 10;
+ }
+
+ @Override
+ // Get the name of each tab. Tab numbers start at 0.
+ public CharSequence getPageTitle(int tab) {
+ switch (tab) {
+ case 0:
+ return context.getString(R.string.overview);
+
+ case 1:
+ return context.getString(R.string.javascript);
+
+ case 2:
+ return context.getString(R.string.local_storage);
+
+ case 3:
+ return context.getString(R.string.user_agent);
+
+ case 4:
+ return context.getString(R.string.requests);
+
+ case 5:
+ return context.getString(R.string.domain_settings);
+
+ case 6:
+ return context.getString(R.string.ssl_certificates);
+
+ case 7:
+ return context.getString(R.string.proxies);
+
+ case 8:
+ return context.getString(R.string.tracking_ids);
+
+ case 9:
+ return context.getString(R.string.bookmarks);
+
+ default:
+ return "";
+ }
+ }
+
+ @Override
+ @NonNull
+ // Setup each tab.
+ public Fragment getItem(int tabNumber) {
+ return GuideTabFragment.createTab(tabNumber);
+ }
+}
\ No newline at end of file
import android.app.AlertDialog;
import android.app.Dialog;
+import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
-import android.preference.PreferenceManager;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
+import androidx.preference.PreferenceManager;
import com.stoutner.privacybrowser.R;
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Get the context.
+ Context context = getContext();
+
+ // Remove the incorrect lint warning below that the context might be null.
+ assert context != null;
+
// Get a handle for the shared preferences.
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
// Get the screenshot and theme preferences.
boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false);
package com.stoutner.privacybrowser.dialogs;
import android.annotation.SuppressLint;
-import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.RadioButton;
import androidx.annotation.NonNull;
-// `ShortcutInfoCompat`, `ShortcutManagerCompat`, and `IconCompat` can be switched to the non-compat versions once the minimum API >= 26.
+import androidx.appcompat.app.AlertDialog;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat;
-import androidx.fragment.app.DialogFragment; // The AndroidX dialog fragment must be used or an error is produced on API <=22.
+import androidx.fragment.app.DialogFragment;
import com.stoutner.privacybrowser.BuildConfig;
import com.stoutner.privacybrowser.R;
--- /dev/null
+/*
+ * Copyright © 2019 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ *
+ * Privacy Browser is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Browser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.stoutner.privacybrowser.dialogs;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.WindowManager;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+import androidx.preference.PreferenceManager;
+
+
+import com.stoutner.privacybrowser.helpers.ProxyHelper;
+import com.stoutner.privacybrowser.R;
+
+public class ProxyNotInstalledDialog extends DialogFragment {
+ public static ProxyNotInstalledDialog displayDialog(String proxyMode) {
+ // Create an arguments bundle.
+ Bundle argumentsBundle = new Bundle();
+
+ // Store the proxy mode in the bundle.
+ argumentsBundle.putString("proxy_mode", proxyMode);
+
+ // Create a new instance of the dialog.
+ ProxyNotInstalledDialog proxyNotInstalledDialog = new ProxyNotInstalledDialog();
+
+ // Add the bundle to the dialog.
+ proxyNotInstalledDialog.setArguments(argumentsBundle);
+
+ // Return the new dialog.
+ return proxyNotInstalledDialog;
+ }
+
+ @Override
+ @NonNull
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Get the context and the activity.
+ Context context = getContext();
+ Activity activity = getActivity();
+
+ // Remove the incorrect lint warnings below that the context or the activity might be null.
+ assert context != null;
+ assert activity != null;
+
+ // Get the arguments.
+ Bundle arguments = getArguments();
+
+ // Remove the incorrect lint warning below that the arguments might be null.
+ assert arguments != null;
+
+ // Get the proxy mode from the arguments.
+ String proxyMode = arguments.getString("proxy_mode");
+
+ // Remove the incorrect lint warning below tha tth eproxy mode migth be null.
+ assert proxyMode != null;
+
+ // Get a handle for the shared preferences.
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+
+ // Get the screenshot and the theme preferences.
+ boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false);
+ boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false);
+
+ // Use a builder to create the alert dialog.
+ AlertDialog.Builder dialogBuilder;
+
+ // Set the style and the icon according to the theme.
+ if (darkTheme) {
+ // Set the style.
+ dialogBuilder = new AlertDialog.Builder(activity, R.style.PrivacyBrowserAlertDialogDark);
+
+ // Set the icon.
+ dialogBuilder.setIcon(R.drawable.proxy_enabled_dark);
+ } else {
+ // Set the style.
+ dialogBuilder = new AlertDialog.Builder(activity, R.style.PrivacyBrowserAlertDialogLight);
+
+ // Set the icon.
+ dialogBuilder.setIcon(R.drawable.proxy_enabled_light);
+ }
+
+ // Set the title and the message according to the proxy mode.
+ switch (proxyMode) {
+ case ProxyHelper.TOR:
+ // Set the title.
+ dialogBuilder.setTitle(R.string.orbot_not_installed_title);
+
+ // Set the message.
+ dialogBuilder.setMessage(R.string.orbot_not_installed_message);
+ break;
+
+ case ProxyHelper.I2P:
+ // Set the title.
+ dialogBuilder.setTitle(R.string.i2p_not_installed_title);
+
+ // Set the message.
+ dialogBuilder.setMessage(R.string.i2p_not_installed_message);
+ break;
+ }
+
+ // Set the positive button.
+ dialogBuilder.setPositiveButton(R.string.close, (DialogInterface dialog, int which) -> {
+ // Do nothing. The alert dialog will close automatically.
+ });
+
+ // Create an alert dialog from the alert dialog builder.
+ AlertDialog alertDialog = dialogBuilder.create();
+
+ // Disable screenshots if not allowed.
+ if (!allowScreenshots) {
+ // Remove the warning below that `getWindows()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags((WindowManager.LayoutParams.FLAG_SECURE));
+ }
+
+ // Return the alert dialog.
+ return alertDialog;
+ }
+}
\ No newline at end of file
import java.util.Calendar;
import java.util.Date;
-// `@SuppressLing("InflateParams")` removes the warning about using `null` as the parent view group when inflating the `AlertDialog`.
-@SuppressLint("InflateParams")
public class ViewSslCertificateDialog extends DialogFragment {
public static ViewSslCertificateDialog displayDialog(long webViewFragmentId) {
// Create an arguments bundle.
return viewSslCertificateDialog;
}
+ // `@SuppressLing("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
+ @SuppressLint("InflateParams")
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Get the arguments.
Bundle arguments = getArguments();
- // Remove the incorrect lint warning below that `getLong()` might be null.
+ // Remove the incorrect lint warning below that the arguments might be null.
assert arguments != null;
// Get the current position of this WebView fragment.
// Set the title.
dialogBuilder.setTitle(R.string.unencrypted_website);
- // Set the Layout. The parent view is `null` because it will be assigned by `AlertDialog`.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.unencrypted_website, null));
+ // Set the Layout. The parent view is `null` because it will be assigned by the alert dialog.
+ dialogBuilder.setView(layoutInflater.inflate(R.layout.unencrypted_website_dialog, null));
// Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
// Set the title.
dialogBuilder.setTitle(R.string.ssl_certificate);
- // Set the layout. The parent view is `null` because it will be assigned by `AlertDialog`.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.view_ssl_certificate, null));
+ // Set the layout. The parent view is `null` because it will be assigned by the alert dialog.
+ dialogBuilder.setView(layoutInflater.inflate(R.layout.view_ssl_certificate_dialog, null));
// Create an alert dialog from the builder.
final AlertDialog alertDialog = dialogBuilder.create();
--- /dev/null
+/*
+ * Copyright © 2019 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ *
+ * Privacy Browser is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Browser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.stoutner.privacybrowser.dialogs;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.WindowManager;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+import androidx.preference.PreferenceManager;
+
+import com.stoutner.privacybrowser.R;
+
+public class WaitingForProxyDialog extends DialogFragment {
+ // `@SuppressLing("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
+ @SuppressLint("InflateParams")
+ @Override
+ @NonNull
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Get the context and the activity.
+ Context context = getContext();
+ Activity activity = getActivity();
+
+ // Remove the incorrect lint warnings below that the context or the activity might be null.
+ assert context != null;
+ assert activity != null;
+
+ // Get the activity's layout inflater.
+ LayoutInflater layoutInflater = activity.getLayoutInflater();
+
+ // Get a handle for the shared preferences.
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+
+ // Get the screenshot and theme preferences.
+ boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false);
+ boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false);
+
+ // Use a builder to create the alert dialog.
+ AlertDialog.Builder dialogBuilder;
+
+ // Set the style according to the theme.
+ if (darkTheme) {
+ dialogBuilder = new AlertDialog.Builder(activity, R.style.PrivacyBrowserAlertDialogDark);
+ } else {
+ dialogBuilder = new AlertDialog.Builder(activity, R.style.PrivacyBrowserAlertDialogLight);
+ }
+
+ // Set the layout. The parent view is `null` because it will be assigned by the alert dialog.
+ dialogBuilder.setView(layoutInflater.inflate(R.layout.waiting_for_proxy_dialog, null));
+
+ // Create an alert dialog from the alert dialog builder.
+ AlertDialog alertDialog = dialogBuilder.create();
+
+ // Disable screenshots if not allowed.
+ if (!allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ // The alert dialog must be shown before items in the layout can be modified.
+ alertDialog.show();
+
+ // Return the alert dialog.
+ return alertDialog;
+ }
+}
\ No newline at end of file
TextView webViewProviderTextView = tabLayout.findViewById(R.id.webview_provider);
TextView webViewVersionTextView = tabLayout.findViewById(R.id.webview_version);
TextView orbotTextView = tabLayout.findViewById(R.id.orbot);
+ TextView i2pTextView = tabLayout.findViewById(R.id.i2p);
TextView openKeychainTextView = tabLayout.findViewById(R.id.open_keychain);
TextView easyListTextView = tabLayout.findViewById(R.id.easylist);
TextView easyPrivacyTextView = tabLayout.findViewById(R.id.easyprivacy);
orbot = "";
}
+ // Get the I2P version name if I2P is installed.
+ String i2p;
+ try {
+ // Store the version name.
+ i2p = context.getPackageManager().getPackageInfo("net.i2p.android.router", 0).versionName;
+ } catch (PackageManager.NameNotFoundException exception) { // I2P is not installed.
+ i2p = "";
+ }
+
// Get the OpenKeychain version name if it is installed.
String openKeychain;
try {
orbotTextView.setVisibility(View.GONE);
}
+ // Only populate the I2P text view if it is installed.
+ if (!i2p.isEmpty()) {
+ String i2pLabel = getString(R.string.i2p) + " ";
+ SpannableStringBuilder i2pStringBuilder = new SpannableStringBuilder(i2pLabel + i2p);
+ i2pStringBuilder.setSpan(blueColorSpan, i2pLabel.length(), i2pStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ i2pTextView.setText(i2pStringBuilder);
+ } else { // I2P is not installed.
+ i2pTextView.setVisibility(View.GONE);
+ }
+
// Only populate the OpenKeychain text view if it is installed.
if (!openKeychain.isEmpty()) {
String openKeychainLabel = getString(R.string.openkeychain) + " ";
// Load the tabs according to the theme.
if (darkTheme) { // The dark theme is applied.
- // Set the background color. The deprecated `.getColor()` must be used until API >= 23.
- //noinspection deprecation
tabWebView.setBackgroundColor(getResources().getColor(R.color.gray_850));
// Tab numbers start at 0.
break;
case 7:
- tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_tor_dark.html");
+ tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_proxies_dark.html");
break;
case 8:
break;
case 7:
- tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_tor_light.html");
+ tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_proxies_light.html");
break;
case 8:
import com.stoutner.privacybrowser.R;
import com.stoutner.privacybrowser.activities.MainWebViewActivity;
+import com.stoutner.privacybrowser.helpers.ProxyHelper;
public class SettingsFragment extends PreferenceFragmentCompat {
// Define the class variables.
Preference googleAnalyticsPreference = findPreference("google_analytics");
Preference facebookClickIdsPreference = findPreference("facebook_click_ids");
Preference twitterAmpRedirectsPreference = findPreference("twitter_amp_redirects");
- Preference proxyThroughOrbotPreference = findPreference("proxy_through_orbot");
- Preference torHomepagePreference = findPreference("tor_homepage");
- Preference torSearchPreference = findPreference("tor_search");
- Preference torSearchCustomURLPreference = findPreference("tor_search_custom_url");
Preference searchPreference = findPreference("search");
Preference searchCustomURLPreference = findPreference("search_custom_url");
+ Preference proxyPreference = findPreference("proxy");
+ Preference proxyCustomHostPreference = findPreference("proxy_custom_host");
+ Preference proxyCustomPortPreference = findPreference("proxy_custom_port");
Preference fullScreenBrowsingModePreference = findPreference("full_screen_browsing_mode");
Preference hideAppBarPreference = findPreference("hide_app_bar");
Preference clearEverythingPreference = findPreference("clear_everything");
assert googleAnalyticsPreference != null;
assert facebookClickIdsPreference != null;
assert twitterAmpRedirectsPreference != null;
- assert proxyThroughOrbotPreference != null;
- assert torHomepagePreference != null;
- assert torSearchPreference != null;
- assert torSearchCustomURLPreference != null;
assert searchPreference != null;
assert searchCustomURLPreference != null;
+ assert proxyPreference != null;
+ assert proxyCustomHostPreference != null;
+ assert proxyCustomPortPreference != null;
assert fullScreenBrowsingModePreference != null;
assert hideAppBarPreference != null;
assert clearEverythingPreference != null;
assert wideViewportPreference != null;
assert displayWebpageImagesPreference != null;
- // Set dependencies.
- torHomepagePreference.setDependency("proxy_through_orbot");
- torSearchPreference.setDependency("proxy_through_orbot");
+ // Set the hide app bar preference dependency.
hideAppBarPreference.setDependency("full_screen_browsing_mode");
// Get strings from the preferences.
- String torSearchString = savedPreferences.getString("tor_search", getString(R.string.tor_search_default_value));
String searchString = savedPreferences.getString("search", getString(R.string.search_default_value));
+ String proxyString = savedPreferences.getString("proxy", getString(R.string.proxy_default_value));
// Get booleans that are used in multiple places from the preferences.
boolean javaScriptEnabled = savedPreferences.getBoolean("javascript", false);
boolean thirdPartyCookiesEnabled = savedPreferences.getBoolean("third_party_cookies", false);
boolean fanboyAnnoyanceListEnabled = savedPreferences.getBoolean("fanboys_annoyance_list", true);
boolean fanboySocialBlockingEnabled = savedPreferences.getBoolean("fanboys_social_blocking_list", true);
- boolean proxyThroughOrbot = savedPreferences.getBoolean("proxy_through_orbot", false);
boolean fullScreenBrowsingMode = savedPreferences.getBoolean("full_screen_browsing_mode", false);
boolean clearEverything = savedPreferences.getBoolean("clear_everything", true);
boolean darkTheme = savedPreferences.getBoolean("dark_theme", false);
customUserAgentPreference.setSummary(savedPreferences.getString("custom_user_agent", getString(R.string.custom_user_agent_default_value)));
customUserAgentPreference.setEnabled(userAgentPreference.getSummary().equals(getString(R.string.custom_user_agent)));
-
- // Set the Tor homepage URL as the summary text for the `tor_homepage` preference when the preference screen is loaded. The default is Searx: `http://ulrn6sryqaifefld.onion/`.
- torHomepagePreference.setSummary(savedPreferences.getString("tor_homepage", getString(R.string.tor_homepage_default_value)));
-
-
- // Set the Tor search URL as the summary text for the Tor preference when the preference screen is loaded.
- if (torSearchString.equals("Custom URL")) {
- // Use R.string.custom_url, which will be translated, instead of the array value, which will not.
- torSearchPreference.setSummary(R.string.custom_url);
- } else {
- // Set the array value as the summary text.
- torSearchPreference.setSummary(torSearchString);
- }
-
- // Set the summary text for `tor_search_custom_url`. The default is `""`.
- torSearchCustomURLPreference.setSummary(savedPreferences.getString("tor_search_custom_url", getString(R.string.tor_search_custom_url_default_value)));
-
- // Enable the Tor custom URL search options only if proxying through Orbot and the search is set to `Custom URL`.
- torSearchCustomURLPreference.setEnabled(proxyThroughOrbot && torSearchString.equals("Custom URL"));
-
-
// Set the search URL as the summary text for the search preference when the preference screen is loaded.
if (searchString.equals("Custom URL")) {
// Use R.string.custom_url, which will be translated, instead of the array value, which will not.
searchCustomURLPreference.setSummary(savedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value)));
searchCustomURLPreference.setEnabled(searchString.equals("Custom URL"));
+ // Set the summary text for the proxy preference when the preference screen is loaded.
+ switch (proxyString) {
+ case ProxyHelper.NONE:
+ proxyPreference.setSummary(getString(R.string.no_proxy_enabled));
+ break;
+
+ case ProxyHelper.TOR:
+ proxyPreference.setSummary(getString(R.string.tor_enabled));
+ break;
+
+ case ProxyHelper.I2P:
+ proxyPreference.setSummary(getString(R.string.i2p_enabled));
+ break;
+
+ case ProxyHelper.CUSTOM:
+ proxyPreference.setSummary(getString(R.string.custom_proxy));
+ break;
+ }
+
+ // Only enable the custom proxy options if a custom proxy is selected.
+ proxyCustomHostPreference.setEnabled(proxyString.equals("Custom"));
+ proxyCustomPortPreference.setEnabled(proxyString.equals("Custom"));
+
+ // Set the summary text for the custom proxy options.
+ proxyCustomHostPreference.setSummary(savedPreferences.getString("proxy_custom_host", getString(R.string.proxy_custom_host_default_value)));
+ proxyCustomPortPreference.setSummary(savedPreferences.getString("proxy_custom_port", getString(R.string.proxy_custom_port_default_value)));
+
// Set the status of the Clear and Exit preferences.
clearCookiesPreference.setEnabled(!clearEverything);
clearDomStoragePreference.setEnabled(!clearEverything);
}
}
- // Set the Tor icons according to the theme.
- if (proxyThroughOrbot) { // Proxying is enabled.
- if (darkTheme) {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_dark);
- torHomepagePreference.setIcon(R.drawable.home_enabled_dark);
- torSearchPreference.setIcon(R.drawable.search_enabled_dark);
-
- // Set the custom search icon.
- if (torSearchCustomURLPreference.isEnabled()) {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
- } else {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
- }
- } else {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_light);
- torHomepagePreference.setIcon(R.drawable.home_enabled_light);
- torSearchPreference.setIcon(R.drawable.search_enabled_light);
-
- // Set the custom search icon.
- if (torSearchCustomURLPreference.isEnabled()) {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
- } else {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
- }
- }
- } else { // Proxying is disabled.
- if (darkTheme) {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_dark);
- torHomepagePreference.setIcon(R.drawable.home_ghosted_dark);
- torSearchPreference.setIcon(R.drawable.search_ghosted_dark);
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
- } else {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_light);
- torHomepagePreference.setIcon(R.drawable.home_ghosted_light);
- torSearchPreference.setIcon(R.drawable.search_ghosted_light);
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
- }
- }
-
// Set the search custom URL icon.
if (searchCustomURLPreference.isEnabled()) {
if (darkTheme) {
}
}
+ // Set the Proxy icons according to the theme and status.
+ if (proxyString.equals("None")) { // Proxying is disabled.
+ if (darkTheme) { // Dark theme.
+ // Set the main proxy icon to be disabled.
+ proxyPreference.setIcon(R.drawable.proxy_disabled_dark);
+
+ // Set the custom proxy icons to be ghosted.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ } else { // Light theme.
+ // Set the main proxy icon to be disabled.
+ proxyPreference.setIcon(R.drawable.proxy_disabled_light);
+
+ // Set the custom proxy icons to be ghosted.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_light);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_light);
+ }
+ } else { // Proxying is enabled.
+ if (darkTheme) { // Dark theme.
+ // Set the main proxy icon to be enabled.
+ proxyPreference.setIcon(R.drawable.proxy_enabled_dark);
+
+ // Set the custom proxy icons according to their status.
+ if (proxyCustomHostPreference.isEnabled()) { // Custom proxy is enabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_enabled_dark);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_enabled_dark);
+ } else { // Custom proxy is disabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ }
+ } else { // Light theme.
+ // Set the main proxy icon to be enabled.
+ proxyPreference.setIcon(R.drawable.proxy_enabled_light);
+
+ // Set the custom proxy icons according to their status.
+ if (proxyCustomHostPreference.isEnabled()) { // Custom proxy is enabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_enabled_light);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_enabled_light);
+ } else { // Custom proxy is disabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_light);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_light);
+ }
+ }
+ }
+
// Set the full screen browsing mode icons.
if (fullScreenBrowsingMode) { // Full screen browsing mode is enabled.
// Set the `fullScreenBrowsingModePreference` icon according to the theme.
}
break;
- case "proxy_through_orbot":
- // Get current settings.
- boolean currentProxyThroughOrbot = sharedPreferences.getBoolean("proxy_through_orbot", false);
- String currentTorSearchString = sharedPreferences.getString("tor_search", getString(R.string.tor_search_default_value));
-
- // Enable the Tor custom URL search option only if `currentProxyThroughOrbot` is true and the search is set to `Custom URL`.
- torSearchCustomURLPreference.setEnabled(currentProxyThroughOrbot && currentTorSearchString.equals("Custom URL"));
-
- // Update the icons.
- if (currentProxyThroughOrbot) {
- // Set the Tor icons according to the theme.
- if (darkTheme) {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_dark);
- torHomepagePreference.setIcon(R.drawable.home_enabled_dark);
- torSearchPreference.setIcon(R.drawable.search_enabled_dark);
-
- // Set the `torSearchCustomURLPreference` icon.
- if (torSearchCustomURLPreference.isEnabled()) {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
- } else {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
- }
- } else {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_light);
- torHomepagePreference.setIcon(R.drawable.home_enabled_light);
- torSearchPreference.setIcon(R.drawable.search_enabled_light);
-
- // Set the `torSearchCustomURLPreference` icon.
- if (torSearchCustomURLPreference.isEnabled()) {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
- } else {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
- }
- }
- } else { // Proxy through Orbot is disabled.
- if (darkTheme) {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_dark);
- torHomepagePreference.setIcon(R.drawable.home_ghosted_dark);
- torSearchPreference.setIcon(R.drawable.search_ghosted_dark);
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
- } else {
- proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_light);
- torHomepagePreference.setIcon(R.drawable.home_ghosted_light);
- torSearchPreference.setIcon(R.drawable.search_ghosted_light);
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
- }
- }
- break;
-
- case "tor_homepage":
- // Set the new tor homepage URL as the summary text for the `tor_homepage` preference. The default is Searx: `http://ulrn6sryqaifefld.onion/`.
- torHomepagePreference.setSummary(sharedPreferences.getString("tor_homepage", getString(R.string.tor_homepage_default_value)));
- break;
-
- case "tor_search":
- // Get the present search string.
- String presentTorSearchString = sharedPreferences.getString("tor_search", getString(R.string.tor_search_default_value));
-
- // Update the preferences.
- if (presentTorSearchString.equals("Custom URL")) {
- // Use `R.string.custom_url`, which is translated, as the summary instead of the array value, which isn't.
- torSearchPreference.setSummary(R.string.custom_url);
-
- // Enable `torSearchCustomURLPreference`.
- torSearchCustomURLPreference.setEnabled(true);
-
- // Update the `torSearchCustomURLPreference` icon.
- if (darkTheme) {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
- } else {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
- }
- } else {
- // Set the array value as the summary text.
- torSearchPreference.setSummary(presentTorSearchString);
-
- // Disable `torSearchCustomURLPreference`.
- torSearchCustomURLPreference.setEnabled(false);
-
- // Update the `torSearchCustomURLPreference` icon.
- if (darkTheme) {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
- } else {
- torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
- }
- }
- break;
-
- case "tor_search_custom_url":
- // Set the summary text for `tor_search_custom_url`.
- torSearchCustomURLPreference.setSummary(sharedPreferences.getString("tor_search_custom_url", getString(R.string.tor_search_custom_url_default_value)));
- break;
-
case "search":
// Store the new search string.
String newSearchString = sharedPreferences.getString("search", getString(R.string.search_default_value));
searchCustomURLPreference.setSummary(sharedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value)));
break;
+ case "proxy":
+ // Get current proxy string.
+ String currentProxyString = sharedPreferences.getString("proxy", getString(R.string.proxy_default_value));
+
+ // Update the summary text for the proxy preference.
+ switch (currentProxyString) {
+ case ProxyHelper.NONE:
+ proxyPreference.setSummary(getString(R.string.no_proxy_enabled));
+ break;
+
+ case ProxyHelper.TOR:
+ proxyPreference.setSummary(getString(R.string.tor_enabled));
+ break;
+
+ case ProxyHelper.I2P:
+ proxyPreference.setSummary(getString(R.string.i2p_enabled));
+ break;
+
+ case ProxyHelper.CUSTOM:
+ proxyPreference.setSummary(getString(R.string.custom_proxy));
+ break;
+ }
+
+ // Update the status of the custom proxy options.
+ proxyCustomHostPreference.setEnabled(currentProxyString.equals("Custom"));
+ proxyCustomPortPreference.setEnabled(currentProxyString.equals("Custom"));
+
+ // Update the icons.
+ if (currentProxyString.equals("None")) { // Proxying is disabled.
+ if (darkTheme) { // Dark theme.
+ // Set the main proxy icon to be disabled
+ proxyPreference.setIcon(R.drawable.proxy_disabled_dark);
+
+ // Set the custom proxy icons to be ghosted.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ } else { // Light theme.
+ // Set the main proxy icon to be disabled.
+ proxyPreference.setIcon(R.drawable.proxy_disabled_light);
+
+ // Set the custom proxy icons to be ghosted.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_light);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_light);
+ }
+ } else { // Proxying is enabled.
+ if (darkTheme) { // Dark theme.
+ // Set the main proxy icon to be enabled.
+ proxyPreference.setIcon(R.drawable.proxy_enabled_dark);
+
+ /// Set the custom proxy icons according to their status.
+ if (proxyCustomHostPreference.isEnabled()) { // Custom proxy is enabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_enabled_dark);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_enabled_dark);
+ } else { // Custom proxy is disabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_dark);
+ }
+ } else { // Light theme.
+ // Set the main proxy icon to be enabled.
+ proxyPreference.setIcon(R.drawable.proxy_enabled_light);
+
+ // Set the custom proxy icons according to their status.
+ if (proxyCustomHostPreference.isEnabled()) { // Custom proxy is enabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_enabled_light);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_enabled_light);
+ } else { // Custom proxy is disabled.
+ proxyCustomHostPreference.setIcon(R.drawable.proxy_ghosted_light);
+ proxyCustomPortPreference.setIcon(R.drawable.proxy_ghosted_light);
+ }
+ }
+ }
+ break;
+
+ case "proxy_custom_host":
+ // Set the summary text for the proxy custom host.
+ proxyCustomHostPreference.setSummary(sharedPreferences.getString("proxy_custom_host", getString(R.string.proxy_custom_host_default_value)));
+ break;
+
+ case "proxy_custom_port":
+ // Set the summary text for the proxy custom port.
+ proxyCustomPortPreference.setSummary(sharedPreferences.getString("proxy_custom_port", getString(R.string.proxy_custom_port_default_value)));
+
case "full_screen_browsing_mode":
if (sharedPreferences.getBoolean("full_screen_browsing_mode", false)) { // Full screen browsing is enabled.
// Set the full screen browsing mode preference icon according to the theme.
public static final String EXPORT_SUCCESSFUL = "Export Successful";
public static final String IMPORT_SUCCESSFUL = "Import Successful";
- private static final int SCHEMA_VERSION = 8;
+ private static final int SCHEMA_VERSION = 9;
private static final String PREFERENCES_TABLE = "preferences";
// The preferences constants.
private static final String GOOGLE_ANALYTICS = "google_analytics";
private static final String FACEBOOK_CLICK_IDS = "facebook_click_ids";
private static final String TWITTER_AMP_REDIRECTS = "twitter_amp_redirects";
- private static final String PROXY_THROUGH_ORBOT = "proxy_through_orbot";
- private static final String TOR_HOMEPAGE = "tor_homepage";
- private static final String TOR_SEARCH = "tor_search";
- private static final String TOR_SEARCH_CUSTOM_URL = "tor_search_custom_url";
private static final String SEARCH = "search";
private static final String SEARCH_CUSTOM_URL = "search_custom_url";
+ private static final String PROXY = "proxy";
+ private static final String PROXY_CUSTOM_HOST = "proxy_custom_host";
+ private static final String PROXY_CUSTOM_PORT = "proxy_custom_port";
private static final String FULL_SCREEN_BROWSING_MODE = "full_screen_browsing_mode";
private static final String HIDE_APP_BAR = "hide_app_bar";
private static final String CLEAR_EVERYTHING = "clear_everything";
GOOGLE_ANALYTICS + " BOOLEAN, " +
FACEBOOK_CLICK_IDS + " BOOLEAN, " +
TWITTER_AMP_REDIRECTS + " BOOLEAN, " +
- PROXY_THROUGH_ORBOT + " BOOLEAN, " +
- TOR_HOMEPAGE + " TEXT, " +
- TOR_SEARCH + " TEXT, " +
- TOR_SEARCH_CUSTOM_URL + " TEXT, " +
SEARCH + " TEXT, " +
SEARCH_CUSTOM_URL + " TEXT, " +
+ PROXY + " TEXT, " +
+ PROXY_CUSTOM_HOST + " TEXT, " +
+ PROXY_CUSTOM_PORT + " TEXT, " +
FULL_SCREEN_BROWSING_MODE + " BOOLEAN, " +
HIDE_APP_BAR + " BOOLEAN, " +
CLEAR_EVERYTHING + " BOOLEAN, " +
preferencesContentValues.put(GOOGLE_ANALYTICS, sharedPreferences.getBoolean(GOOGLE_ANALYTICS, true));
preferencesContentValues.put(FACEBOOK_CLICK_IDS, sharedPreferences.getBoolean(FACEBOOK_CLICK_IDS, true));
preferencesContentValues.put(TWITTER_AMP_REDIRECTS, sharedPreferences.getBoolean(TWITTER_AMP_REDIRECTS, true));
- preferencesContentValues.put(PROXY_THROUGH_ORBOT, sharedPreferences.getBoolean(PROXY_THROUGH_ORBOT, false));
- preferencesContentValues.put(TOR_HOMEPAGE, sharedPreferences.getString(TOR_HOMEPAGE, context.getString(R.string.tor_homepage_default_value)));
- preferencesContentValues.put(TOR_SEARCH, sharedPreferences.getString(TOR_SEARCH, context.getString(R.string.tor_search_default_value)));
- preferencesContentValues.put(TOR_SEARCH_CUSTOM_URL, sharedPreferences.getString(TOR_SEARCH_CUSTOM_URL, context.getString(R.string.tor_search_custom_url_default_value)));
preferencesContentValues.put(SEARCH, sharedPreferences.getString(SEARCH, context.getString(R.string.search_default_value)));
preferencesContentValues.put(SEARCH_CUSTOM_URL, sharedPreferences.getString(SEARCH_CUSTOM_URL, context.getString(R.string.search_custom_url_default_value)));
+ preferencesContentValues.put(PROXY, sharedPreferences.getString(PROXY, context.getString(R.string.proxy_default_value)));
+ preferencesContentValues.put(PROXY_CUSTOM_HOST, sharedPreferences.getString(PROXY_CUSTOM_HOST, context.getString(R.string.proxy_custom_host_default_value)));
+ preferencesContentValues.put(PROXY_CUSTOM_PORT, sharedPreferences.getString(PROXY_CUSTOM_PORT, context.getString(R.string.proxy_custom_port_default_value)));
preferencesContentValues.put(FULL_SCREEN_BROWSING_MODE, sharedPreferences.getBoolean(FULL_SCREEN_BROWSING_MODE, false));
preferencesContentValues.put(HIDE_APP_BAR, sharedPreferences.getBoolean(HIDE_APP_BAR, true));
preferencesContentValues.put(CLEAR_EVERYTHING, sharedPreferences.getBoolean(CLEAR_EVERYTHING, true));
// Close the cursor.
importDatabasePreferenceCursor.close();
- // Create a new column named `font_size`.
+ // Create the new font size column.
importDatabase.execSQL("ALTER TABLE " + PREFERENCES_TABLE + " ADD COLUMN " + FONT_SIZE + " TEXT");
// Place the font size string in the new column.
- importDatabase.execSQL("UPDATE " + PREFERENCES_TABLE + " SET " + FONT_SIZE + " = " + fontSize);
+ importDatabase.execSQL("UPDATE " + PREFERENCES_TABLE + " SET " + FONT_SIZE + " = '" + fontSize + "'");
// Upgrade from schema version 3.
case 3:
importDatabase.execSQL("UPDATE " + DomainsDatabaseHelper.DOMAINS_TABLE + " SET " + DomainsDatabaseHelper.ULTRALIST + " = " + 0);
importDatabase.execSQL("UPDATE " + PREFERENCES_TABLE + " SET " + ULTRALIST + " = " + 0);
}
+
+ // Upgrade from schema version 8.
+ case 8:
+ // Add the new proxy columns to the preferences table.
+ importDatabase.execSQL("ALTER TABLE " + PREFERENCES_TABLE + " ADD COLUMN " + PROXY + " TEXT");
+ importDatabase.execSQL("ALTER TABLE " + PREFERENCES_TABLE + " ADD COLUMN " + PROXY_CUSTOM_HOST + " TEXT");
+ importDatabase.execSQL("ALTER TABLE " + PREFERENCES_TABLE + " ADD COLUMN " + PROXY_CUSTOM_PORT + " TEXT");
+
+ // Get the current proxy values.
+ String proxy = sharedPreferences.getString(PROXY, context.getString(R.string.proxy_default_value));
+ String proxyCustomHost = sharedPreferences.getString(PROXY_CUSTOM_HOST, context.getString(R.string.proxy_custom_host_default_value));
+ String proxyCustomPort = sharedPreferences.getString(PROXY_CUSTOM_PORT, context.getString(R.string.proxy_custom_port_default_value));
+
+ // Populate the table with the current proxy values.
+ importDatabase.execSQL("UPDATE " + PREFERENCES_TABLE + " SET " + PROXY + " = '" + proxy + "'");
+ importDatabase.execSQL("UPDATE " + PREFERENCES_TABLE + " SET " + PROXY_CUSTOM_HOST + " = '" + proxyCustomHost + "'");
+ importDatabase.execSQL("UPDATE " + PREFERENCES_TABLE + " SET " + PROXY_CUSTOM_PORT + " = '" + proxyCustomPort +"'");
}
}
.putBoolean(GOOGLE_ANALYTICS, importPreferencesCursor.getInt(importPreferencesCursor.getColumnIndex(GOOGLE_ANALYTICS)) == 1)
.putBoolean(FACEBOOK_CLICK_IDS, importPreferencesCursor.getInt(importPreferencesCursor.getColumnIndex(FACEBOOK_CLICK_IDS)) == 1)
.putBoolean(TWITTER_AMP_REDIRECTS, importPreferencesCursor.getInt(importPreferencesCursor.getColumnIndex(TWITTER_AMP_REDIRECTS)) == 1)
- .putBoolean(PROXY_THROUGH_ORBOT, importPreferencesCursor.getInt(importPreferencesCursor.getColumnIndex(PROXY_THROUGH_ORBOT)) == 1)
- .putString(TOR_HOMEPAGE, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(TOR_HOMEPAGE)))
- .putString(TOR_SEARCH, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(TOR_SEARCH)))
- .putString(TOR_SEARCH_CUSTOM_URL, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(TOR_SEARCH_CUSTOM_URL)))
.putString(SEARCH, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(SEARCH)))
.putString(SEARCH_CUSTOM_URL, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(SEARCH_CUSTOM_URL)))
+ .putString(PROXY, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(PROXY)))
+ .putString(PROXY_CUSTOM_HOST, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(PROXY_CUSTOM_HOST)))
+ .putString(PROXY_CUSTOM_PORT, importPreferencesCursor.getString(importPreferencesCursor.getColumnIndex(PROXY_CUSTOM_PORT)))
.putBoolean(FULL_SCREEN_BROWSING_MODE, importPreferencesCursor.getInt(importPreferencesCursor.getColumnIndex(FULL_SCREEN_BROWSING_MODE)) == 1)
.putBoolean(HIDE_APP_BAR, importPreferencesCursor.getInt(importPreferencesCursor.getColumnIndex(HIDE_APP_BAR)) == 1)
.putBoolean(CLEAR_EVERYTHING, importPreferencesCursor.getInt(importPreferencesCursor.getColumnIndex(CLEAR_EVERYTHING)) == 1)
+++ /dev/null
-/*
- * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
- *
- * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
- *
- * Privacy Browser is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Privacy Browser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package com.stoutner.privacybrowser.helpers;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
-import android.net.Proxy;
-import android.os.Build;
-import android.os.Parcelable;
-import android.preference.PreferenceManager;
-import android.util.ArrayMap;
-import android.util.Log;
-
-import androidx.appcompat.app.AlertDialog;
-
-import com.stoutner.privacybrowser.activities.MainWebViewActivity;
-import com.stoutner.privacybrowser.R;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-public class OrbotProxyHelper {
- public static void setProxy(Context privacyBrowserContext, Activity parentActivity, String proxyHost, String proxyPort) {
- if (proxyPort.equals("0")) {
- // Clear the proxy values.
- System.clearProperty("proxyHost");
- System.clearProperty("proxyPort");
- } else {
- // Set the proxy values
- System.setProperty("proxyHost", proxyHost);
- System.setProperty("proxyPort", proxyPort);
- }
-
- // These entries shouldn't be needed if the above general settings are applied. They are here for troubleshooting just in case.
- // System.setProperty("http.proxyHost", proxyHost);
- // System.setProperty("http.proxyPort", proxyPort);
- // System.setProperty("https.proxyHost", proxyHost);
- // System.setProperty("https.proxyPort", proxyPort);
-
- // The SOCKS entries do not appear to do anything. But maybe someday they will.
- // System.setProperty("socksProxyHost", proxyHost);
- // System.setProperty("socksProxyPort", "9050");
- // System.setProperty("socks.ProxyHost", proxyHost);
- // System.setProperty("socks.ProxyPort", "9050");
-
- // Use reflection to apply the new proxy values.
- try {
- // Get the application and APK classes. Suppress the lint warning that reflection may not always work in the future and on all devices.
- Class applicationClass = Class.forName("android.app.Application");
- @SuppressLint("PrivateApi") Class loadedApkClass = Class.forName("android.app.LoadedApk");
-
- // Get the declared fields. Suppress the lint warning that `mLoadedApk` cannot be resolved.
- @SuppressWarnings("JavaReflectionMemberAccess") Field methodLoadedApkField = applicationClass.getDeclaredField("mLoadedApk");
- Field methodReceiversField = loadedApkClass.getDeclaredField("mReceivers");
-
- // Allow the values to be changed.
- methodLoadedApkField.setAccessible(true);
- methodReceiversField.setAccessible(true);
-
- // Get the APK object.
- Object methodLoadedApkObject = methodLoadedApkField.get(privacyBrowserContext);
-
- // Get an array map of the receivers.
- ArrayMap receivers = (ArrayMap) methodReceiversField.get(methodLoadedApkObject);
-
- // Set the proxy.
- for (Object receiverMap : receivers.values()) {
- for (Object receiver : ((ArrayMap) receiverMap).keySet()) {
- // Get the receiver class.
- // `Class<?>`, which is an `unbounded wildcard parameterized type`, must be used instead of `Class`, which is a `raw type`. Otherwise, `receiveClass.getDeclaredMethod()` is unhappy.
- Class<?> receiverClass = receiver.getClass();
-
- // Apply the new proxy settings to any classes whose names contain `ProxyChangeListener`.
- if (receiverClass.getName().contains("ProxyChangeListener")) {
- // Get the `onReceive` method from the class.
- Method onReceiveMethod = receiverClass.getDeclaredMethod("onReceive", Context.class, Intent.class);
-
- // Create a proxy change intent.
- Intent proxyChangeIntent = new Intent(Proxy.PROXY_CHANGE_ACTION);
-
- if (Build.VERSION.SDK_INT >= 21) {
- // Get a proxy info class.
- // `Class<?>`, which is an `unbounded wildcard parameterized type`, must be used instead of `Class`, which is a `raw type`. Otherwise, `proxyInfoClass.getMethod()` is unhappy.
- Class<?> proxyInfoClass = Class.forName("android.net.ProxyInfo");
-
- // Get the build direct proxy method from the proxy info class.
- Method buildDirectProxyMethod = proxyInfoClass.getMethod("buildDirectProxy", String.class, Integer.TYPE);
-
- // Populate a proxy info object with the new proxy information.
- Object proxyInfoObject = buildDirectProxyMethod.invoke(proxyInfoClass, proxyHost, Integer.valueOf(proxyPort));
-
- // Add the proxy info object into the proxy change intent.
- proxyChangeIntent.putExtra("proxy", (Parcelable) proxyInfoObject);
- }
-
- // Pass the proxy change intent to the `onReceive` method of the receiver class.
- onReceiveMethod.invoke(receiver, privacyBrowserContext, proxyChangeIntent);
- }
- }
- }
- } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InvocationTargetException exception) {
- Log.d("enableProxyThroughOrbot", "Exception: " + exception);
- }
-
- if (proxyPort.equals("8118")) { // Orbot proxy was turned on.
- try { // Check to see if Orbot is installed.
- PackageManager packageManager = privacyBrowserContext.getPackageManager();
- packageManager.getPackageInfo("org.torproject.android", 0);
-
- // Ask Orbot to connect if its current status is not "ON".
- if (!MainWebViewActivity.orbotStatus.equals("ON")) {
- // Request Orbot to start.
- Intent orbotIntent = new Intent("org.torproject.android.intent.action.START");
-
- // Send the intent to the Orbot package.
- orbotIntent.setPackage("org.torproject.android");
-
- // Request a status response be sent back to this package.
- orbotIntent.putExtra("org.torproject.android.intent.extra.PACKAGE_NAME", privacyBrowserContext.getPackageName());
-
- // Make it so.
- privacyBrowserContext.sendBroadcast(orbotIntent);
- }
- } catch (PackageManager.NameNotFoundException exception){ // If an exception is thrown, Orbot is not installed.
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
- AlertDialog.Builder dialogBuilder;
-
- // Get a handle for the shared preferences.
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(privacyBrowserContext);
-
- // Get the theme preference.
- boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false);
-
- // Set the style according to the theme.
- if (darkTheme) {
- dialogBuilder = new AlertDialog.Builder(parentActivity, R.style.PrivacyBrowserAlertDialogDark);
- } else {
- dialogBuilder = new AlertDialog.Builder(parentActivity, R.style.PrivacyBrowserAlertDialogLight);
- }
-
- // Set the message.
- dialogBuilder.setMessage(R.string.orbot_proxy_not_installed);
-
- // Set the positive button.
- dialogBuilder.setPositiveButton(R.string.close, (DialogInterface dialog, int which) -> {
- // Do nothing. The `AlertDialog` will close automatically.
- });
-
- // Convert `dialogBuilder` to `alertDialog`.
- AlertDialog alertDialog = dialogBuilder.create();
-
- // Make it so.
- alertDialog.show();
- }
- }
- }
-}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ *
+ * Privacy Browser is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Browser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.stoutner.privacybrowser.helpers;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Proxy;
+import android.os.Build;
+import android.os.Parcelable;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import com.stoutner.privacybrowser.activities.MainWebViewActivity;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class ProxyHelper {
+ public static final String NONE = "None";
+ public static final String TOR = "Tor";
+ public static final String I2P = "I2P";
+ public static final String CUSTOM = "Custom";
+
+ public static void setProxy(Context context, String mode) {
+ // Initialize the proxy host and port strings.
+ String proxyHost = "0";
+ String proxyPort = "0";
+
+ // Run the commands that correlate to the proxy mode.
+ switch (mode) {
+ case NONE:
+ // Clear the proxy values.
+ System.clearProperty("proxyHost");
+ System.clearProperty("proxyHost");
+ break;
+
+ case TOR:
+ // Update the proxy host and port strings.
+ proxyHost = "localhost";
+ proxyPort = "8118";
+
+ // Set the proxy values
+ System.setProperty("proxyHost", proxyHost);
+ System.setProperty("proxyPort", proxyPort);
+
+ // Ask Orbot to connect if its current status is not `"ON"`.
+ if (!MainWebViewActivity.orbotStatus.equals("ON")) {
+ // Request Orbot to start.
+ Intent orbotIntent = new Intent("org.torproject.android.intent.action.START");
+
+ // Send the intent to the Orbot package.
+ orbotIntent.setPackage("org.torproject.android");
+
+ // Request a status response be sent back to this package.
+ orbotIntent.putExtra("org.torproject.android.intent.extra.PACKAGE_NAME", context.getPackageName());
+
+ // Make it so.
+ context.sendBroadcast(orbotIntent);
+ }
+ break;
+
+ case I2P:
+ // Update the proxy host and port strings.
+ proxyHost = "localhost";
+ proxyPort = "4444";
+
+ // Set the proxy values
+ System.setProperty("proxyHost", proxyHost);
+ System.setProperty("proxyPort", proxyPort);
+ break;
+
+ case CUSTOM:
+ // Update the proxy host and port strings.
+ proxyHost = "0";
+ proxyPort = "0";
+
+ // Set the proxy values
+ System.setProperty("proxyHost", proxyHost);
+ System.setProperty("proxyPort", proxyPort);
+ break;
+ }
+
+ // Use reflection to apply the new proxy values.
+ try {
+ // Get the application and APK classes. Suppress the lint warning that reflection may not always work in the future and on all devices.
+ Class applicationClass = Class.forName("android.app.Application");
+ @SuppressLint("PrivateApi") Class loadedApkClass = Class.forName("android.app.LoadedApk");
+
+ // Get the declared fields. Suppress the lint warning that `mLoadedApk` cannot be resolved.
+ @SuppressWarnings("JavaReflectionMemberAccess") Field methodLoadedApkField = applicationClass.getDeclaredField("mLoadedApk");
+ Field methodReceiversField = loadedApkClass.getDeclaredField("mReceivers");
+
+ // Allow the values to be changed.
+ methodLoadedApkField.setAccessible(true);
+ methodReceiversField.setAccessible(true);
+
+ // Get the APK object.
+ Object methodLoadedApkObject = methodLoadedApkField.get(context);
+
+ // Get an array map of the receivers.
+ ArrayMap receivers = (ArrayMap) methodReceiversField.get(methodLoadedApkObject);
+
+ // Set the proxy if the receivers has at least one entry.
+ if (receivers != null) {
+ for (Object receiverMap : receivers.values()) {
+ for (Object receiver : ((ArrayMap) receiverMap).keySet()) {
+ // Get the receiver class.
+ // `Class<?>`, which is an `unbounded wildcard parameterized type`, must be used instead of `Class`, which is a `raw type`. Otherwise, `receiveClass.getDeclaredMethod()` is unhappy.
+ Class<?> receiverClass = receiver.getClass();
+
+ // Apply the new proxy settings to any classes whose names contain `ProxyChangeListener`.
+ if (receiverClass.getName().contains("ProxyChangeListener")) {
+ // Get the `onReceive` method from the class.
+ Method onReceiveMethod = receiverClass.getDeclaredMethod("onReceive", Context.class, Intent.class);
+
+ // Create a proxy change intent.
+ Intent proxyChangeIntent = new Intent(Proxy.PROXY_CHANGE_ACTION);
+
+ if (Build.VERSION.SDK_INT >= 21) {
+ // Get a proxy info class.
+ // `Class<?>`, which is an `unbounded wildcard parameterized type`, must be used instead of `Class`, which is a `raw type`. Otherwise, `proxyInfoClass.getMethod()` is unhappy.
+ Class<?> proxyInfoClass = Class.forName("android.net.ProxyInfo");
+
+ // Get the build direct proxy method from the proxy info class.
+ Method buildDirectProxyMethod = proxyInfoClass.getMethod("buildDirectProxy", String.class, Integer.TYPE);
+
+ // Populate a proxy info object with the new proxy information.
+ Object proxyInfoObject = buildDirectProxyMethod.invoke(proxyInfoClass, proxyHost, Integer.valueOf(proxyPort));
+
+ // Add the proxy info object into the proxy change intent.
+ proxyChangeIntent.putExtra("proxy", (Parcelable) proxyInfoObject);
+ }
+
+ // Pass the proxy change intent to the `onReceive` method of the receiver class.
+ onReceiveMethod.invoke(receiver, context, proxyChangeIntent);
+ }
+ }
+ }
+ }
+ } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InvocationTargetException exception) {
+ Log.d("enableProxyThroughOrbot", "Exception: " + exception);
+ }
+ }
+}
\ No newline at end of file
// Track swipe to refresh.
private boolean swipeToRefresh;
+ // Track a URL waiting for a proxy.
+ private String waitingForProxyUrlString = "";
+
// The nested scrolling child helper is used throughout the class.
private NestedScrollingChildHelper nestedScrollingChildHelper;
}
+ // Waiting for proxy.
+ public void setWaitingForProxyUrlString(String urlString) {
+ // Store the waiting for proxy URL string.
+ waitingForProxyUrlString = urlString;
+ }
+
+ public String getWaitingForProxyUrlString() {
+ // Return the waiting for proxy URL string.
+ return waitingForProxyUrlString;
+ }
+
+ public void resetWaitingForProxyUrlString() {
+ // Clear the waiting for proxy URL string.
+ waitingForProxyUrlString = "";
+ }
+
// Scroll range.
public int getHorizontalScrollRange() {
// Return the horizontal scroll range.
--- /dev/null
+<component name="ProjectCodeStyleConfiguration">
+ <code_scheme name="Project" version="173">
+ <codeStyleSettings language="XML">
+ <arrangement>
+ <rules>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:android</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:id</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:name</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>name</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>style</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>ANDROID_ATTRIBUTE_ORDER</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>.*</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ </rules>
+ </arrangement>
+ </codeStyleSettings>
+ </code_scheme>
+</component>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CMakeSettings">
+ <configurations>
+ <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
+ </configurations>
+ </component>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/drawable.iml" filepath="$PROJECT_DIR$/.idea/drawable.iml" />
+ </modules>
+ </component>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$/../../../../.." vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ChangeListManager">
+ <list default="true" id="300aa3b2-5467-4b77-b970-a3e70210d389" name="Default Changelist" comment="">
+ <change afterPath="$PROJECT_DIR$/../../assets/shared_images/open_in_browser_dark.png" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/../../assets/shared_images/open_in_browser_light.png" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/ProxyNotInstalledDialog.java" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/WaitingForProxyDialog.java" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/proxy_disabled_dark.xml" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/proxy_disabled_light.xml" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/proxy_enabled_dark.xml" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/proxy_enabled_light.xml" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/proxy_ghosted_dark.xml" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/proxy_ghosted_light.xml" afterDir="false" />
+ <change afterPath="$PROJECT_DIR$/../layout/waiting_for_proxy_dialog.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../../../../.idea/assetWizardSettings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../../.idea/assetWizardSettings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../../../../.idea/dictionaries/soren.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../../.idea/dictionaries/soren.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../../../build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../build.gradle" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/de/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/de/about_licenses_dark.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/de/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/de/about_licenses_light.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/en/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/en/about_licenses_dark.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/en/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/en/about_licenses_light.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/es/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/es/about_licenses_dark.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/es/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/es/about_licenses_light.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/fr/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/fr/about_licenses_dark.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/fr/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/fr/about_licenses_light.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/it/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/it/about_licenses_dark.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/it/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/it/about_licenses_light.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/ru/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/ru/about_licenses_dark.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/ru/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/ru/about_licenses_light.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/tr/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/tr/about_licenses_dark.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../assets/tr/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/tr/about_licenses_light.html" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/GuideActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/GuideActivity.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/SettingsFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/SettingsFragment.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/ImportExportDatabaseHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/ImportExportDatabaseHelper.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/OrbotProxyHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/ProxyHelper.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/app_bar_disabled_dark.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_disabled_dark.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/app_bar_disabled_light.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_disabled_light.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/app_bar_enabled_dark.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_enabled_dark.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/app_bar_enabled_light.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_enabled_light.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/app_bar_ghosted_dark.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_ghosted_dark.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/app_bar_ghosted_light.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_ghosted_light.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../layout/about_tab_version.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../layout/about_tab_version.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../layout/unencrypted_website.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../layout/unencrypted_website_dialog.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../layout/view_ssl_certificate.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../layout/view_ssl_certificate_dialog.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../menu/webview_options_menu.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../menu/webview_options_menu.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../values-de/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-de/strings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../values-es/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-es/strings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../values-fr/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-fr/strings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../values-it/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-it/strings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../values-ru/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-ru/strings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../values-tr/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-tr/strings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values/strings.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../xml/preferences.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../xml/preferences.xml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/../../../../../build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../../build.gradle" afterDir="false" />
+ </list>
+ <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+ <option name="SHOW_DIALOG" value="false" />
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+ <option name="LAST_RESOLUTION" value="IGNORE" />
+ </component>
+ <component name="Git.Settings">
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../../../.." />
+ </component>
+ <component name="ProjectFrameBounds" extendedState="6">
+ <option name="x" value="1213" />
+ <option name="y" value="595" />
+ <option name="width" value="2289" />
+ <option name="height" value="1457" />
+ </component>
+ <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
+ <component name="ProjectView">
+ <navigator currentView="ProjectPane" proportions="" version="1">
+ <foldersAlwaysOnTop value="true" />
+ </navigator>
+ <panes>
+ <pane id="ProjectPane" />
+ <pane id="Scope" />
+ <pane id="PackagesPane" />
+ </panes>
+ </component>
+ <component name="PropertiesComponent">
+ <property name="android.sdk.path" value="$USER_HOME$/Android/Sdk" />
+ <property name="last_opened_file_path" value="$USER_HOME$/Lightning-Browser" />
+ <property name="settings.editor.selected.configurable" value="AndroidSdkUpdater" />
+ </component>
+ <component name="RunDashboard">
+ <option name="ruleStates">
+ <list>
+ <RuleState>
+ <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+ </RuleState>
+ <RuleState>
+ <option name="name" value="StatusDashboardGroupingRule" />
+ </RuleState>
+ </list>
+ </option>
+ </component>
+ <component name="RunManager">
+ <configuration default="true" type="JUnit" factoryName="JUnit">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <module name="" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" />
+ <option name="PACKAGE_NAME" />
+ <option name="MAIN_CLASS_NAME" />
+ <option name="METHOD_NAME" />
+ <option name="TEST_OBJECT" value="class" />
+ <option name="VM_PARAMETERS" value="-ea" />
+ <option name="PARAMETERS" />
+ <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <option name="TEST_SEARCH_SCOPE">
+ <value defaultName="singleModule" />
+ </option>
+ <envs />
+ <patterns />
+ <method />
+ </configuration>
+ <configuration name="<template>" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
+ <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
+ </configuration>
+ <configuration default="true" type="Applet">
+ <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
+ <configuration default="true" type="Application" factoryName="Application">
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
+ <configuration default="true" type="TestNG">
+ <option name="TEST_OBJECT" value="CLASS" />
+ <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+ <properties />
+ <listeners />
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
+ </component>
+ <component name="SvnConfiguration">
+ <configuration />
+ </component>
+ <component name="TaskManager">
+ <task active="true" id="Default" summary="Default task">
+ <changelist id="300aa3b2-5467-4b77-b970-a3e70210d389" name="Default Changelist" comment="" />
+ <created>1576705464689</created>
+ <option name="number" value="Default" />
+ <option name="presentableId" value="Default" />
+ <updated>1576705464689</updated>
+ </task>
+ <servers />
+ </component>
+ <component name="ToolWindowManager">
+ <frame x="-8" y="0" width="3668" height="2068" extended-state="6" />
+ <layout>
+ <window_info active="true" content_ui="combo" id="Project" visible="true" weight="0.3297402" />
+ <window_info id="Structure" side_tool="true" />
+ <window_info id="Image Layers" />
+ <window_info id="Designer" />
+ <window_info id="Resources Explorer" />
+ <window_info id="Capture Tool" />
+ <window_info id="Favorites" side_tool="true" />
+ <window_info id="Captures" order="0" weight="0.25" />
+ <window_info anchor="bottom" id="Version Control" />
+ <window_info anchor="bottom" id="TODO" />
+ <window_info anchor="bottom" id="Terminal" />
+ <window_info anchor="bottom" id="Event Log" side_tool="true" />
+ <window_info anchor="right" id="Capture Analysis" />
+ <window_info anchor="right" id="Theme Preview" />
+ <window_info anchor="right" id="Palette	" />
+ </layout>
+ </component>
+</project>
\ No newline at end of file
-<!-- `app_bar_disabled_dark.xml` comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
+<!-- This icon comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
-<!-- `app_bar_disabled_light.xml` comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
+<!-- This icon comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
-<!-- `app_bar_enabled_dark.xml` comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
+<!-- This icon comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
-<!-- `app_bar_enabled_light.xml` comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
+<!-- This icon comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
-<!-- `app_bar_ghosted_dark.xml` comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
+<!-- This icon comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
android:height="24dp"
- android:viewportWidth="24.0"
- android:viewportHeight="24.0" >
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
<!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
<path
-<!-- `app_bar_ghosted_light.xml` comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
+<!-- This icon comes from the Android Material icon set, where it is called `payment`. It is released under the Apache License 2.0. -->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
android:height="24dp"
- android:viewportWidth="24.0"
- android:viewportHeight="24.0" >
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
<!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
<path
+++ /dev/null
-<!-- `orbot_disabled_dark.xml` comes from the Orbot project. It is a modified version of <https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png>,
- which is released under the 3-clause BSD license. Modifications copyright Soren Stoutner <soren@stoutner.com> 2017. The resulting image is released under the GPLv3+ license. -->
-
-<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
-<vector
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:autoMirrored="true"
- android:width="24dp"
- android:height="24dp"
- android:viewportHeight="33.86667"
- android:viewportWidth="33.866665"
- tools:ignore="VectorRaster" >
-
- <!-- We have to use a hard coded color until API >= 21. Then we can use `@color`. -->
- <path
- android:fillColor="#FF9E9E9E"
- android:pathData="m12.18,32.04c-4.14,-1.92 -6.77,-6.03 -6.77,-10.58 0,-4.35 1.64,-7.16 5.91,-10.12 1.46,-1.01 2.25,-1.97 2.45,-2.98 0.21,-1.03 0.52,-1.41 1.02,-1.22 0.4,0.15 1.72,0.28 2.93,0.28 1.94,0 2.24,0.15 2.52,1.27 0.18,0.7 1.25,1.92 2.39,2.7 4.22,2.92 5.84,5.75 5.82,10.17 -0.02,4.59 -2.89,8.88 -7.12,10.64 -2.51,1.05 -6.7,0.97 -9.17,-0.18zM14.95,5.83c-1.05,-1.13 -1.48,-4.92 -0.56,-4.92 0.96,0 2.54,2.69 2.54,4.33 0,1.96 -0.56,2.13 -1.99,0.59zM17.44,6.25c0,-0.68 1.54,-2.33 2.17,-2.33 0.68,0 0.31,1.37 -0.58,2.18 -1.11,1.01 -1.59,1.05 -1.59,0.16z" android:strokeWidth="0.50134861"/>
-</vector>
+++ /dev/null
-<!-- `orbot_disabled_light.xml` comes from the Orbot project. It is a modified version of <https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png>,
- which is released under the 3-clause BSD license. Modifications copyright Soren Stoutner <soren@stoutner.com> 2017. The resulting image is released under the GPLv3+ license. -->
-
-<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
-<vector
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:autoMirrored="true"
- android:width="24dp"
- android:height="24dp"
- android:viewportHeight="33.86667"
- android:viewportWidth="33.866665"
- tools:ignore="VectorRaster" >
-
- <!-- We have to use a hard coded color until API >= 21. Then we can use `@color`. -->
- <path
- android:fillColor="#FF757575"
- android:pathData="m12.18,32.04c-4.14,-1.92 -6.77,-6.03 -6.77,-10.58 0,-4.35 1.64,-7.16 5.91,-10.12 1.46,-1.01 2.25,-1.97 2.45,-2.98 0.21,-1.03 0.52,-1.41 1.02,-1.22 0.4,0.15 1.72,0.28 2.93,0.28 1.94,0 2.24,0.15 2.52,1.27 0.18,0.7 1.25,1.92 2.39,2.7 4.22,2.92 5.84,5.75 5.82,10.17 -0.02,4.59 -2.89,8.88 -7.12,10.64 -2.51,1.05 -6.7,0.97 -9.17,-0.18zM14.95,5.83c-1.05,-1.13 -1.48,-4.92 -0.56,-4.92 0.96,0 2.54,2.69 2.54,4.33 0,1.96 -0.56,2.13 -1.99,0.59zM17.44,6.25c0,-0.68 1.54,-2.33 2.17,-2.33 0.68,0 0.31,1.37 -0.58,2.18 -1.11,1.01 -1.59,1.05 -1.59,0.16z" android:strokeWidth="0.50134861"/>
-</vector>
+++ /dev/null
-<!-- `orbot_enabled_dark.xml` comes from the Orbot project. It is a modified version of <https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png>,
- which is released under the 3-clause BSD license. Modifications copyright Soren Stoutner <soren@stoutner.com> 2017. The resulting image is released under the GPLv3+ license. -->
-
-<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
-<vector
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:autoMirrored="true"
- android:width="24dp"
- android:height="24dp"
- android:viewportHeight="33.86667"
- android:viewportWidth="33.866665"
- tools:ignore="VectorRaster" >
-
- <!-- We have to use a hard coded color until API >= 21. Then we can use `@color`. -->
- <path
- android:fillColor="#FF1E88E5"
- android:pathData="m12.18,32.04c-4.14,-1.92 -6.77,-6.03 -6.77,-10.58 0,-4.35 1.64,-7.16 5.91,-10.12 1.46,-1.01 2.25,-1.97 2.45,-2.98 0.21,-1.03 0.52,-1.41 1.02,-1.22 0.4,0.15 1.72,0.28 2.93,0.28 1.94,0 2.24,0.15 2.52,1.27 0.18,0.7 1.25,1.92 2.39,2.7 4.22,2.92 5.84,5.75 5.82,10.17 -0.02,4.59 -2.89,8.88 -7.12,10.64 -2.51,1.05 -6.7,0.97 -9.17,-0.18zM14.95,5.83c-1.05,-1.13 -1.48,-4.92 -0.56,-4.92 0.96,0 2.54,2.69 2.54,4.33 0,1.96 -0.56,2.13 -1.99,0.59zM17.44,6.25c0,-0.68 1.54,-2.33 2.17,-2.33 0.68,0 0.31,1.37 -0.58,2.18 -1.11,1.01 -1.59,1.05 -1.59,0.16z" android:strokeWidth="0.50134861"/>
-</vector>
+++ /dev/null
-<!-- `orbot_enabled_light.xml` comes from the Orbot project. It is a modified version of <https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png>,
- which is released under the 3-clause BSD license. Modifications copyright Soren Stoutner <soren@stoutner.com> 2017. The resulting image is released under the GPLv3+ license. -->
-
-<!-- `tools:ignore="VectorRaster"` removes the lint warning about `android:autoMirrored="true"` not applying to API < 21. -->
-<vector
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:autoMirrored="true"
- android:width="24dp"
- android:height="24dp"
- android:viewportHeight="33.86667"
- android:viewportWidth="33.866665"
- tools:ignore="VectorRaster" >
-
- <!-- We have to use a hard coded color until API >= 21. Then we can use `@color`. -->
- <path
- android:fillColor="#FF1565C0"
- android:pathData="m12.18,32.04c-4.14,-1.92 -6.77,-6.03 -6.77,-10.58 0,-4.35 1.64,-7.16 5.91,-10.12 1.46,-1.01 2.25,-1.97 2.45,-2.98 0.21,-1.03 0.52,-1.41 1.02,-1.22 0.4,0.15 1.72,0.28 2.93,0.28 1.94,0 2.24,0.15 2.52,1.27 0.18,0.7 1.25,1.92 2.39,2.7 4.22,2.92 5.84,5.75 5.82,10.17 -0.02,4.59 -2.89,8.88 -7.12,10.64 -2.51,1.05 -6.7,0.97 -9.17,-0.18zM14.95,5.83c-1.05,-1.13 -1.48,-4.92 -0.56,-4.92 0.96,0 2.54,2.69 2.54,4.33 0,1.96 -0.56,2.13 -1.99,0.59zM17.44,6.25c0,-0.68 1.54,-2.33 2.17,-2.33 0.68,0 0.31,1.37 -0.58,2.18 -1.11,1.01 -1.59,1.05 -1.59,0.16z" android:strokeWidth="0.50134861"/>
-</vector>
--- /dev/null
+<!-- This icon comes from the Android Material icon set, where it is called `open_in_browser`. It is released under the Apache License 2.0. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
+
+ <!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
+ <path
+ android:fillColor="#FF9E9E9E"
+ android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h4v-2L5,18L5,8h14v10h-4v2h4c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.89,-2 -2,-2zM12,10l-4,4h3v6h2v-6h3l-4,-4z" />
+</vector>
--- /dev/null
+<!-- This icon comes from the Android Material icon set, where it is called `open_in_browser`. It is released under the Apache License 2.0. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
+
+ <!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
+ <path
+ android:fillColor="#FF757575"
+ android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h4v-2L5,18L5,8h14v10h-4v2h4c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.89,-2 -2,-2zM12,10l-4,4h3v6h2v-6h3l-4,-4z" />
+</vector>
--- /dev/null
+<!-- This icon comes from the Android Material icon set, where it is called `open_in_browser`. It is released under the Apache License 2.0. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
+
+ <!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
+ <path
+ android:fillColor="#FF1E88E5"
+ android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h4v-2L5,18L5,8h14v10h-4v2h4c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.89,-2 -2,-2zM12,10l-4,4h3v6h2v-6h3l-4,-4z" />
+</vector>
--- /dev/null
+<!-- This icon comes from the Android Material icon set, where it is called `open_in_browser`. It is released under the Apache License 2.0. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
+
+ <!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
+ <path
+ android:fillColor="#FF1565C0"
+ android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h4v-2L5,18L5,8h14v10h-4v2h4c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.89,-2 -2,-2zM12,10l-4,4h3v6h2v-6h3l-4,-4z" />
+</vector>
--- /dev/null
+<!-- This icon comes from the Android Material icon set, where it is called `open_in_browser`. It is released under the Apache License 2.0. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
+
+ <!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
+ <path
+ android:fillColor="#FF616161"
+ android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h4v-2L5,18L5,8h14v10h-4v2h4c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.89,-2 -2,-2zM12,10l-4,4h3v6h2v-6h3l-4,-4z" />
+</vector>
--- /dev/null
+<!-- This icon comes from the Android Material icon set, where it is called `open_in_browser`. It is released under the Apache License 2.0. -->
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0" >
+
+ <!-- A hard coded color must be used until the minimum API >= 21. Then `@color` may be used instead. -->
+ <path
+ android:fillColor="#FFB7B7B7"
+ android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h4v-2L5,18L5,8h14v10h-4v2h4c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.89,-2 -2,-2zM12,10l-4,4h3v6h2v-6h3l-4,-4z" />
+</vector>
android:layout_width="wrap_content"
android:textIsSelectable="true" />
+ <TextView
+ android:id="@+id/i2p"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:textIsSelectable="true" />
+
<TextView
android:id="@+id/open_keychain"
android:layout_height="wrap_content"
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2017 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<TextView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:padding="10dp"
- android:textColor="?attr/redText"
- android:text="@string/no_ssl_certificate" />
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2017 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:padding="10dp"
+ android:textColor="?attr/redText"
+ android:text="@string/no_ssl_certificate" />
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2017,2019 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<ScrollView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" >
-
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:padding="10dp"
- android:orientation="vertical" >
-
- <!-- Domain. -->
- <TextView
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_marginTop="5dp"
- android:text="@string/domain"
- android:textAllCaps="true"
- android:textStyle="bold"
- android:textColor="?attr/sslTitle" />
-
- <TextView
- android:id="@+id/domain"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
- <TextView
- android:id="@+id/ip_addresses"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"/>
-
- <!-- Issued To. -->
- <TextView
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_marginTop="15dp"
- android:text="@string/issued_to"
- android:textAllCaps="true"
- android:textStyle="bold"
- android:textColor="?attr/sslTitle" />
-
- <TextView
- android:id="@+id/issued_to_cname"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
- <TextView
- android:id="@+id/issued_to_oname"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
- <TextView
- android:id="@+id/issued_to_uname"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
-
- <!-- Issued By. -->
- <TextView
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_marginTop="15dp"
- android:text="@string/issued_by"
- android:textAllCaps="true"
- android:textStyle="bold"
- android:textColor="?attr/sslTitle" />
-
- <TextView
- android:id="@+id/issued_by_cname"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
- <TextView
- android:id="@+id/issued_by_oname"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
- <TextView
- android:id="@+id/issued_by_uname"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
-
- <!-- Valid Dates. -->
- <TextView
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_marginTop="15dp"
- android:text="@string/valid_dates"
- android:textAllCaps="true"
- android:textStyle="bold"
- android:textColor="?attr/sslTitle" />
-
- <TextView
- android:id="@+id/start_date"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
-
- <TextView
- android:id="@+id/end_date"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content" />
- </LinearLayout>
-</ScrollView>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2017,2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" >
+
+ <LinearLayout
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:padding="10dp"
+ android:orientation="vertical" >
+
+ <!-- Domain. -->
+ <TextView
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="5dp"
+ android:text="@string/domain"
+ android:textAllCaps="true"
+ android:textStyle="bold"
+ android:textColor="?attr/sslTitle" />
+
+ <TextView
+ android:id="@+id/domain"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+ <TextView
+ android:id="@+id/ip_addresses"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"/>
+
+ <!-- Issued To. -->
+ <TextView
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="15dp"
+ android:text="@string/issued_to"
+ android:textAllCaps="true"
+ android:textStyle="bold"
+ android:textColor="?attr/sslTitle" />
+
+ <TextView
+ android:id="@+id/issued_to_cname"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+ <TextView
+ android:id="@+id/issued_to_oname"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+ <TextView
+ android:id="@+id/issued_to_uname"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+
+ <!-- Issued By. -->
+ <TextView
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="15dp"
+ android:text="@string/issued_by"
+ android:textAllCaps="true"
+ android:textStyle="bold"
+ android:textColor="?attr/sslTitle" />
+
+ <TextView
+ android:id="@+id/issued_by_cname"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+ <TextView
+ android:id="@+id/issued_by_oname"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+ <TextView
+ android:id="@+id/issued_by_uname"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+
+ <!-- Valid Dates. -->
+ <TextView
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="15dp"
+ android:text="@string/valid_dates"
+ android:textAllCaps="true"
+ android:textStyle="bold"
+ android:textColor="?attr/sslTitle" />
+
+ <TextView
+ android:id="@+id/start_date"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+
+ <TextView
+ android:id="@+id/end_date"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+ </LinearLayout>
+</ScrollView>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2019 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:orientation="vertical" >
+
+ <ProgressBar
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="20dp"
+ android:layout_marginBottom="5dp" />
+
+ <TextView
+ android:id="@+id/waiting_for_proxy_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:textAlignment="center"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="20dp"
+ android:text="@string/waiting_for_orbot"
+ android:textSize="22sp"
+ android:textStyle="bold"
+ android:textColor="?android:textColorPrimary" />
+</LinearLayout>
\ No newline at end of file
</menu>
</item>
+ <item
+ android:id="@+id/proxy"
+ android:title="@string/proxy"
+ android:orderInCategory="900"
+ app:showAsAction="never" >
+
+ <menu>
+ <group android:checkableBehavior="single" >
+ <item
+ android:id="@+id/proxy_none"
+ android:title="@string/proxy_none"
+ android:orderInCategory="910"
+ app:showAsAction="never" />
+
+ <item
+ android:id="@+id/proxy_tor"
+ android:title="@string/proxy_tor"
+ android:orderInCategory="920"
+ app:showAsAction="never" />
+
+ <item
+ android:id="@+id/proxy_i2p"
+ android:title="@string/proxy_i2p"
+ android:orderInCategory="930"
+ app:showAsAction="never" />
+
+ <item
+ android:id="@+id/proxy_custom"
+ android:title="@string/proxy_custom"
+ android:orderInCategory="940"
+ app:showAsAction="never" />
+ </group>
+ </menu>
+ </item>
+
<item
android:id="@+id/page"
android:title="@string/page"
- android:orderInCategory="900"
+ android:orderInCategory="1000"
app:showAsAction="never" >
<menu>
<item
android:id="@+id/user_agent"
android:title="@string/options_user_agent"
- android:orderInCategory="910"
+ android:orderInCategory="1010"
app:showAsAction="never" >
<menu>
- <group android:checkableBehavior ="single">
+ <group android:checkableBehavior="single">
<item
android:id="@+id/user_agent_privacy_browser"
android:title="@string/user_agent_privacy_browser"
- android:orderInCategory="911"
+ android:orderInCategory="1011"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_webview_default"
android:title="@string/user_agent_webview_default"
- android:orderInCategory="912"
+ android:orderInCategory="1012"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_firefox_on_android"
android:title="@string/user_agent_firefox_on_android"
- android:orderInCategory="913"
+ android:orderInCategory="1013"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_chrome_on_android"
android:title="@string/user_agent_chrome_on_android"
- android:orderInCategory="914"
+ android:orderInCategory="1014"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_safari_on_ios"
android:title="@string/user_agent_safari_on_ios"
- android:orderInCategory="915"
+ android:orderInCategory="1015"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_firefox_on_linux"
android:title="@string/user_agent_firefox_on_linux"
- android:orderInCategory="916"
+ android:orderInCategory="1016"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_chromium_on_linux"
android:title="@string/user_agent_chromium_on_linux"
- android:orderInCategory="917"
+ android:orderInCategory="1017"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_firefox_on_windows"
android:title="@string/user_agent_firefox_on_windows"
- android:orderInCategory="918"
+ android:orderInCategory="1018"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_chrome_on_windows"
android:title="@string/user_agent_chrome_on_windows"
- android:orderInCategory="919"
+ android:orderInCategory="1019"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_edge_on_windows"
android:title="@string/user_agent_edge_on_windows"
- android:orderInCategory="920"
+ android:orderInCategory="1020"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_internet_explorer_on_windows"
android:title="@string/user_agent_internet_explorer_on_windows"
- android:orderInCategory="921"
+ android:orderInCategory="1021"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_safari_on_macos"
android:title="@string/user_agent_safari_on_macos"
- android:orderInCategory="922"
+ android:orderInCategory="1022"
app:showAsAction="never" />
<item
android:id="@+id/user_agent_custom"
android:title="@string/user_agent_custom"
- android:orderInCategory="923"
+ android:orderInCategory="1023"
app:showAsAction="never" />
</group>
</menu>
<item
android:id="@+id/swipe_to_refresh"
android:title="@string/swipe_to_refresh_options_menu"
- android:orderInCategory="930"
+ android:orderInCategory="1030"
android:checkable="true"
app:showAsAction="never" />
<item
android:id="@+id/wide_viewport"
android:title="@string/wide_viewport"
- android:orderInCategory="940"
+ android:orderInCategory="1040"
android:checkable="true"
app:showAsAction="never" />
<item
android:id="@+id/display_images"
android:title="@string/display_images"
- android:orderInCategory="950"
+ android:orderInCategory="1050"
android:checkable="true"
app:showAsAction="never" />
<item
android:id="@+id/night_mode"
android:title="@string/options_night_mode"
- android:orderInCategory="960"
+ android:orderInCategory="1060"
android:checkable="true"
app:showAsAction="never" />
<item
android:id="@+id/font_size"
android:title="@string/font_size"
- android:orderInCategory="970"
+ android:orderInCategory="1070"
app:showAsAction="never" >
</item>
<item
android:id="@+id/find_on_page"
android:title="@string/find_on_page"
- android:orderInCategory="980"
+ android:orderInCategory="1080"
app:showAsAction="never|collapseActionView" />
<item
android:id="@+id/print"
android:title="@string/print"
- android:orderInCategory="990"
+ android:orderInCategory="1090"
app:showAsAction="never" />
<item
android:id="@+id/save_as_image"
android:title="@string/save_as_image"
- android:orderInCategory="1000"
+ android:orderInCategory="1100"
app:showAsAction="never" />
<item
android:id="@+id/add_to_homescreen"
android:title="@string/add_to_home_screen"
- android:orderInCategory="1010"
+ android:orderInCategory="1110"
app:showAsAction="never" />
<item
android:id="@+id/view_source"
android:title="@string/view_source"
- android:orderInCategory="1020"
+ android:orderInCategory="1120"
app:showAsAction="never" />
</menu>
</item>
<item
android:id="@+id/share"
android:title="@string/share"
- android:orderInCategory="1100"
+ android:orderInCategory="1200"
app:showAsAction="never" >
<menu>
<item
android:id="@+id/share_url"
android:title="@string/share_url"
- android:orderInCategory="1110"
+ android:orderInCategory="1210"
app:showAsAction="never" />
<item
android:id="@+id/open_with_app"
android:title="@string/open_with_app"
- android:orderInCategory="1120"
+ android:orderInCategory="1220"
app:showAsAction="never" />
<item
android:id="@+id/open_with_browser"
android:title="@string/open_with_browser"
- android:orderInCategory="1130"
+ android:orderInCategory="1230"
app:showAsAction="never" />
</menu>
</item>
- <item
- android:id="@+id/proxy_through_orbot"
- android:title="@string/proxy_through_orbot"
- android:orderInCategory="1200"
- android:checkable="true"
- app:showAsAction="never" />
-
<item
android:id="@+id/refresh"
android:title="@string/refresh"
<string name="new_tab">Neuer Tab</string>
<string name="loading">Laden…</string>
<string name="error">Fehler:</string>
+ <string name="apply">Anwenden</string>
<!-- Loading Blocklists. -->
<string name="loading_easylist">Lade EasyList</string>
<string name="domain_name_instructions">*. kann als Wildcard-Subdomain verwendet werden (z.B. *.stoutner.com)</string>
<string-array name="font_size_array">
<item>Standardeinstellung</item>
- <item>Custom font size</item>
+ <item>Benutzerdefinierte Schriftgröße</item>
</string-array>
<string-array name="swipe_to_refresh_array">
<item>Standardeinstellung</item>
<string name="ok">OK</string>
<!-- Orbot. -->
- <string name="orbot_proxy_not_installed">Orbot-Proxy wird nicht funktionieren, solange Orbot nicht installiert ist.</string>
- <string name="waiting_for_orbot">Warte, bis sich Orbot verbindet...</string> <!-- The WebView in API 19 does not like the ellipse character. -->
+ <string name="waiting_for_orbot">Warte, bis sich Orbot verbindet.</string>
<!-- About Activity. -->
<string name="about_privacy_browser">Über Privacy Browser</string>
<string name="facebook_click_ids_summary">Entfernt “?fbclid=”, “&fbclid=”, “?fbadid=” und “&fbadid=” sowie alles danach aus URLs.</string>
<string name="twitter_amp_redirects">Twitter AMP-Umleitungen</string>
<string name="twitter_amp_redirects_summary">Entfernt “?amp=1” sowie alles danach URLs.</string>
- <string name="tor">Tor</string>
- <string name="proxy_through_orbot">Proxy durch Orbot</string>
- <string name="proxy_through_orbot_summary">Sämtlichen Web-Verkehr durch Orbot mittels localhost:8118 leiten.</string>
- <string name="tor_homepage">TOR-Homepage</string>
- <string name="tor_search">TOR-Suche</string>
- <string-array name="tor_search_entries">
- <item>Searx</item>
- <item>DuckDuckGo - JavaScript deaktiviert</item>
- <item>DuckDuckGo - JavaScript aktiviert</item>
- <item>Eigene</item>
- </string-array>
- <string name="tor_search_custom_url">eigene TOR-Such-URL</string>
<string name="search">Suche</string>
<string-array name="search_entries">
<item>Startpage</item>
<string name="new_tab">Nueva pestaña</string>
<string name="loading">Cargando…</string>
<string name="error">Error:</string>
+ <string name="apply">Apply</string>
<!-- Loading Blocklists. -->
<string name="loading_easylist">Cargando EasyList</string>
<string name="domain_name_instructions">*. puede ser añadido a un dominio para incluir todos los subdominios (p.ej. *.stoutner.com)</string>
<string-array name="font_size_array">
<item>Por defecto del sistema</item>
- <item>Custom font size</item>
+ <item>Tamaño de letra personalizado</item>
</string-array>
<string-array name="swipe_to_refresh_array">
<item>Por defecto del sistema</item>
<string name="ok">OK</string>
<!-- Orbot. -->
- <string name="orbot_proxy_not_installed">Enviar a través de Orbot no funcionará a menos que se instale Orbot.</string>
- <string name="waiting_for_orbot">Esperando a Orbot para conectar...</string> <!-- The WebView in API 19 does not like the ellipse character. -->
+ <string name="waiting_for_orbot">Esperando a Orbot para conectar.</string>
<!-- About Activity. -->
<string name="about_privacy_browser">Acerca de Navegador Privado</string>
<string name="facebook_click_ids_summary">Eliminar “?fbclid=”, “&fbclid=”, “?fbadid=”, “&fbadid=” y cualquier cosa tras ello de las URLs.</string>
<string name="twitter_amp_redirects">Redirecciones de Twitter AMP</string>
<string name="twitter_amp_redirects_summary">Eliminar “?amp=1” y cualquier cosa después de esto de las URLs.</string>
- <string name="tor">Tor</string>
- <string name="proxy_through_orbot">Enviar a través de Orbot</string>
- <string name="proxy_through_orbot_summary">Enviar todo el tráfico web a través de Orbot en localhost:8118.</string>
- <string name="tor_homepage">Página de inicio de Tor</string>
- <string name="tor_search">Búsqueda en Tor</string>
- <string-array name="tor_search_entries">
- <item>Searx</item>
- <item>DuckDuckGo - Javascript deshabilitado</item>
- <item>DuckDuckGo - Javascript habilitado</item>
- <item>Personalizado</item>
- </string-array>
- <string name="tor_search_custom_url">URL personalizada de búsqueda en Tor</string>
<string name="search">Búsqueda</string>
<string-array name="search_entries">
<item>Startpage</item>
<string name="new_tab">Nouvel onglet</string>
<string name="loading">Chargement…</string>
<string name="error">Erreur :</string>
+ <string name="apply">Appliquer</string>
<!-- Loading Blocklists. -->
<string name="loading_easylist">Chargement EasyList</string>
<string name="domain_name_instructions">Faire précéder par *. pour inclure l\'ensemble des sous-domaines (ex. *.stoutner.com)</string>
<string-array name="font_size_array">
<item>Réglages systèmes</item>
- <item>Custom font size</item>
+ <item>Taille de police personnalisée</item>
</string-array>
<string-array name="swipe_to_refresh_array">
<item>Réglages systèmes</item>
<string name="ok">OK</string>
<!-- Orbot. -->
- <string name="orbot_proxy_not_installed">Le proxy Orbot ne fonctionnera pas à moins qu\'Orbot soit installé.</string>
- <string name="waiting_for_orbot">En attente de connection d\'Orbot...</string> <!-- The WebView in API 19 does not like the ellipse character. -->
+ <string name="waiting_for_orbot">En attente de connection d\'Orbot.</string>
<!-- About Activity. -->
<string name="about_privacy_browser">À propos</string>
<string name="facebook_click_ids_summary">Supprime “?fbclid=”, “&fbclid=”, “?fbadid=” et “&fbadid=” et tout ce qui suit après ces URLs.</string>
<string name="twitter_amp_redirects">Twitter AMP</string>
<string name="twitter_amp_redirects_summary">Supprimer “?amp=1” et tout ce qui suit après cette URL.</string>
- <string name="tor">Tor</string>
- <string name="proxy_through_orbot">Proxy au travers d\'Orbot</string>
- <string name="proxy_through_orbot_summary">Proxifier tout le trafic web au travers d\'Orbot via localhost:8118.</string>
- <string name="tor_homepage">Tor - Accueil</string>
- <string name="tor_search">Tor - Recherche</string>
- <string-array name="tor_search_entries">
- <item>Searx</item>
- <item>DuckDuckGo - JavaScript désactivé</item>
- <item>DuckDuckGo - JavaScript activé</item>
- <item>Custom</item>
- </string-array>
- <string name="tor_search_custom_url">Tor - URL personnalisée de recherche</string>
<string name="search">Moteur de Recherche</string>
<string-array name="search_entries">
<item>Startpage</item>
<string name="new_tab">Nuova Scheda</string>
<string name="loading">Caricamento…</string>
<string name="error">Errore:</string>
+ <string name="apply">Applica</string>
<!-- Loading Blocklists. -->
<string name="loading_easylist">Caricamento EasyList</string>
<string name="domain_name_instructions">è possibile anteporre *. a un dominio per includere tutti i sottodomini (es. *.stoutner.com)</string>
<string-array name="font_size_array">
<item>Impostazioni di default</item>
- <item>Custom font size</item>
+ <item>Dimensione carattere personalizzata</item>
</string-array>
<string-array name="swipe_to_refresh_array">
<item>Impostazioni di default</item>
<string name="ok">OK</string>
<!-- Orbot. -->
- <string name="orbot_proxy_not_installed">Il Proxy con Orbot funziona solo se è installato Orbot.</string>
- <string name="waiting_for_orbot">In attesa della connessione di Orbot...</string> <!-- The WebView in API 19 does not like the ellipse character. -->
+ <string name="waiting_for_orbot">In attesa della connessione di Orbot.</string>
<!-- About Activity. -->
<string name="about_privacy_browser">Informazioni su Privacy Browser</string>
<string name="facebook_click_ids_summary">Rimuovi “?fbclid=”, “&fbclid=”, “?fbadid=”, e “&fbadid=” e tutto quello che segue dalle URL.</string>
<string name="twitter_amp_redirects">Reindirizzamenti Twitter AMP</string>
<string name="twitter_amp_redirects_summary">Rimuovi “?amp=1” e tutto quello che segue dalle URL.</string>
- <string name="tor">Tor</string>
- <string name="proxy_through_orbot">Utilizza Proxy con Orbot</string>
- <string name="proxy_through_orbot_summary">Utilizza Proxy attraverso Orbot su localhost:8118.</string>
- <string name="tor_homepage">Tor Homepage</string>
- <string name="tor_search">Tor - Ricerca</string>
- <string-array name="tor_search_entries">
- <item>Searx</item>
- <item>DuckDuckGo - JavaScript disabilitato</item>
- <item>DuckDuckGo - JavaScript abilitato</item>
- <item>Personalizzata</item>
- </string-array>
- <string name="tor_search_custom_url">Tor - Ricerca personalizzata</string>
<string name="search">Ricerca</string>
<string-array name="search_entries">
<item>Startpage</item>
<string name="new_tab">Новая вкладка</string>
<string name="loading">Загрузка…</string>
<string name="error">Ошибка:</string>
+ <string name="apply">Применить</string>
<!-- Loading Blocklists. -->
<string name="loading_easylist">Загрузка EasyList</string>
<string name="domain_name_instructions">добавьте *. для включения всех поддоменов (напр. *.stoutner.com)</string>
<string-array name="font_size_array">
<item>Настройки по умолчанию</item>
- <item>Custom font size</item>
+ <item>Пользовательский размер шрифта</item>
</string-array>
<string-array name="swipe_to_refresh_array">
<item>Настройки по умолчанию</item>
<string name="ok">OK</string>
<!-- Orbot. -->
- <string name="orbot_proxy_not_installed">Проксирование Orbot работает только с установленным Orbot.</string>
- <string name="waiting_for_orbot">Ожидание Orbot для подключения...</string> <!-- The WebView in API 19 does not like the ellipse character. -->
+ <string name="waiting_for_orbot">Ожидание Orbot для подключения.</string>
<!-- About Activity. -->
<string name="about_privacy_browser">О Privacy Browser</string>
<string name="facebook_click_ids_summary">Удалять из URL “?fbclid=”, “&fbclid=”, “?fbadid=”, и “&fbadid=” и все что будет после.</string>
<string name="twitter_amp_redirects">AMP-перенаправления в Twitter</string>
<string name="twitter_amp_redirects_summary">Удалять из URL “?amp=1” и все что будет после.</string>
- <string name="tor">Tor</string>
- <string name="proxy_through_orbot">Прокси через Orbot</string>
- <string name="proxy_through_orbot_summary">Проксировать весь веб-трафик через Orbot на localhost:8118.</string>
- <string name="tor_homepage">Домашняя страница Tor</string>
- <string name="tor_search">Поиск Tor</string>
- <string-array name="tor_search_entries">
- <item>Searx</item>
- <item>DuckDuckGo - JavaScript выключен</item>
- <item>DuckDuckGo - JavaScript включен</item>
- <item>Настраиваемый</item>
- </string-array>
- <string name="tor_search_custom_url">Настраиваемый URL поиска Tor</string>
<string name="search">Поиск</string>
<string-array name="search_entries">
<item>Startpage</item>
<string name="ok">OK</string>
<!-- Orbot. -->
- <string name="orbot_proxy_not_installed">Orbot yüklenmeden Orbot vekil sunucusu çalışmayacaktır.</string>
- <string name="waiting_for_orbot">Orbot\'un bağlanması bekleniyor...</string> <!-- The WebView in API 19 does not like the ellipse character. -->
+ <string name="waiting_for_orbot">Orbot\'un bağlanması bekleniyor.</string>
<!-- About Activity. -->
<string name="about_privacy_browser">Privacy Browser Hakkında</string>
<string name="facebook_click_ids_summary">URL\'lerde “?fbclid=”, “&fbclid=”, “?fbadid=”, ve “&fbadid=” ve onlardan sonra gelen her şey kaldırıldı.</string>
<string name="twitter_amp_redirects">Twitter AMP yönlendirmeleri</string>
<string name="twitter_amp_redirects_summary">URL\'den sonra gelen “?amp=1” ve diğer şeyleri kaldırır.</string>
- <string name="tor">Tor</string>
- <string name="proxy_through_orbot">Orbot vekil sunucusu</string>
- <string name="proxy_through_orbot_summary">localhost:8118 üzerinden tüm web trafiği için vekil sunucusunu Orbot yapar.</string>
- <string name="tor_homepage">Tor anasayfa</string>
- <string name="tor_search">Tor arama</string>
- <string-array name="tor_search_entries">
- <item>Searx</item>
- <item>DuckDuckGo - JavaScript devre dışı</item>
- <item>DuckDuckGo - JavaScript etkin</item>
- <item>Özel</item>
- </string-array>
- <string name="tor_search_custom_url">Tor özel sayfa arama</string>
<string name="search">Arama</string>
<string-array name="search_entries">
<item>Startpage</item>
<string name="download_location_message">Privacy Browser needs the storage permission to use the public download directory. If it is denied, the app’s download directory will be used instead.</string>
<string name="ok">OK</string>
- <!-- Orbot. -->
- <string name="orbot_proxy_not_installed">Orbot proxy will not work unless Orbot is installed.</string>
- <string name="waiting_for_orbot">Waiting for Orbot to connect...</string> <!-- The WebView in API 19 does not like the ellipse character. -->
+ <!-- Proxy. -->
+ <string name="proxy_not_installed_dialog" translatable="false">Proxy not installed dialog</string> <!-- This string is used to tag the proxy not installed dialog. It is never displayed to the user. -->
+ <string name="waiting_for_proxy_dialog" translatable="false">Waiting for proxy dialog</string> <!-- This string is used to tag the waiting for proxy dialog. It is never displayed to the user. -->
+ <string name="proxies">Proxies</string>
+ <string name="orbot_not_installed_title">Orbot Not Installed</string>
+ <string name="orbot_not_installed_message">Proxying through Orbot will not work unless the Orbot app is installed.</string>
+ <string name="i2p_not_installed_title">I2P Not Installed</string>
+ <string name="i2p_not_installed_message">Proxying through I2P will not work unless the I2P app is installed</string>
+ <string name="waiting_for_orbot">Waiting for Orbot to connect.</string>
<!-- About Activity. -->
<string name="about_privacy_browser">About Privacy Browser</string>
<string name="webview_provider">WebView Provider:</string>
<string name="webview_version">WebView Version:</string>
<string name="orbot">Orbot:</string>
+ <string name="i2p">I2P:</string>
<string name="openkeychain">OpenKeychain:</string>
<string name="easylist_label">EasyList:</string>
<string name="easyprivacy_label">EasyPrivacy:</string>
<string name="facebook_click_ids_summary">Remove “?fbclid=”, “&fbclid=”, “?fbadid=”, and “&fbadid=” and anything after them from URLs.</string>
<string name="twitter_amp_redirects">Twitter AMP redirects</string>
<string name="twitter_amp_redirects_summary">Remove “?amp=1” and anything after it from URLs.</string>
- <string name="tor">Tor</string>
- <string name="proxy_through_orbot">Proxy through Orbot</string>
- <string name="proxy_through_orbot_summary">Proxy all web traffic through Orbot on localhost:8118.</string>
- <string name="tor_homepage">Tor homepage</string>
- <string name="tor_search">Tor search</string>
- <string-array name="tor_search_entries">
- <item>Searx</item>
- <item>DuckDuckGo - JavaScript disabled</item>
- <item>DuckDuckGo - JavaScript enabled</item>
- <item>Custom</item>
- </string-array>
- <string-array name="tor_search_entry_values" translatable="false"> <!-- None of the items in this `string-array` should be translated. -->
- <item>http://ulrn6sryqaifefld.onion/?q=</item>
- <item>https://3g2upl4pq6kufc4m.onion/html/?q=</item>
- <item>https://3g2upl4pq6kufc4m.onion/?q=</item>
- <item>Custom URL</item><!-- This item must not be translated into other languages because it is referenced in code. It is never displayed on the screen. -->
- </string-array>
- <string name="tor_search_custom_url">Tor search custom URL</string>
<string name="search">Search</string>
<string-array name="search_entries">
<item>Startpage</item>
<item>Yahoo - JavaScript enabled</item>
<item>Custom</item>
</string-array>
- <string-array name="search_entry_values" translatable="false"> <!-- None of the items in this `string-array` should be translated. -->
+ <string-array name="search_entry_values" translatable="false"> <!-- None of the items in this string array should be translated. -->
<item>https://www.startpage.com/do/search?query=</item>
<item>https://searx.me/?q=</item>
<item>https://duckduckgo.com/html/?q=</item>
</string-array>
<string name="search_custom_url">Search custom URL</string>
<string name="custom_url">Custom URL</string>
+ <string name="proxy">Proxy</string>
+ <string name="proxy_none">None</string>
+ <string name="proxy_tor">Tor</string>
+ <string name="proxy_i2p">I2P</string>
+ <string name="proxy_custom">Custom</string>
+ <string-array name="proxy_entries">
+ <item>None</item>
+ <item>Tor</item>
+ <item>I2P</item>
+ <item>Custom</item>
+ </string-array>
+ <string-array name="proxy_entry_values" translatable="false"> <!-- None of the items in this string array should be translated. They are referenced in the code and are never displayed on the screen.-->
+ <item>None</item>
+ <item>Tor</item>
+ <item>I2P</item>
+ <item>Custom</item>
+ </string-array>
+ <string name="no_proxy_enabled">No proxy enabled. Connect directly to the internet.</string>
+ <string name="tor_enabled">Tor - proxy through localhost on port 8118.</string>
+ <string name="i2p_enabled">I2P - proxy through localhost on port 4444.</string>
+ <string name="custom_proxy">Custom proxy</string>
+ <string name="proxy_custom_host">Proxy custom host</string>
+ <string name="proxy_custom_port">Proxy custom port</string>
<string name="full_screen">Full Screen</string>
<string name="full_screen_browsing_mode">Full screen browsing mode</string>
<string name="full_screen_browsing_mode_summary">Double-tap to toggle full screen browsing mode.</string>
<!-- Non-translatable preference default values. -->
<string name="user_agent_default_value" translatable="false">Privacy Browser</string>
<string name="custom_user_agent_default_value" translatable="false">PrivacyBrowser/1.0</string>
- <string name="tor_homepage_default_value" translatable="false">https://3g2upl4pq6kufc4m.onion/</string>
- <string name="tor_search_default_value" translatable="false">https://3g2upl4pq6kufc4m.onion/html?q=</string>
- <string name="tor_search_custom_url_default_value" translatable="false" />
<string name="search_default_value" translatable="false">https://www.startpage.com/do/search?query=</string>
<string name="search_custom_url_default_value" translatable="false" />
+ <string name="proxy_default_value" translatable="false">None</string>
+ <string name="proxy_custom_host_default_value" translatable="false" />
+ <string name="proxy_custom_port_default_value" translatable="false" />
<string name="homepage_default_value" translatable="false">https://www.startpage.com/</string>
<string name="font_size_default_value" translatable="false">100</string>
android:defaultValue="true" />
</PreferenceCategory>
- <PreferenceCategory
- android:key="tor"
- android:title="@string/tor" >
-
- <SwitchPreference
- android:key="proxy_through_orbot"
- android:title="@string/proxy_through_orbot"
- android:summary="@string/proxy_through_orbot_summary"
- android:defaultValue="false" />
-
- <EditTextPreference
- android:key="tor_homepage"
- android:title="@string/tor_homepage"
- android:defaultValue="@string/tor_homepage_default_value"
- android:inputType="textUri" />
-
- <ListPreference
- android:key="tor_search"
- android:title="@string/tor_search"
- android:entries="@array/tor_search_entries"
- android:entryValues="@array/tor_search_entry_values"
- android:defaultValue="@string/tor_search_default_value" />
-
- <!-- `android:inputType` currently doesn't work with AndroidX. -->
- <EditTextPreference
- android:key="tor_search_custom_url"
- android:title="@string/tor_search_custom_url"
- android:defaultValue="@string/tor_search_custom_url_default_value"
- android:inputType="textUri" />
- </PreferenceCategory>
-
<PreferenceCategory
android:key="search_category"
android:title="@string/search" >
android:inputType="textUri" />
</PreferenceCategory>
+ <PreferenceCategory
+ android:key="proxy_category"
+ android:title="@string/proxy" >
+
+ <ListPreference
+ android:key="proxy"
+ android:title="@string/proxy"
+ android:entries="@array/proxy_entries"
+ android:entryValues="@array/proxy_entry_values"
+ android:defaultValue="@string/proxy_default_value" />
+
+ <EditTextPreference
+ android:key="proxy_custom_host"
+ android:title="@string/proxy_custom_host"
+ android:defaultValue="@string/proxy_custom_host_default_value"
+ android:inputType="textUri" />
+
+ <!-- `android:inputType="number"` currently doesn't work with AndroidX. -->
+ <EditTextPreference
+ android:key="proxy_custom_port"
+ android:title="@string/proxy_custom_port"
+ android:defaultValue="@string/proxy_custom_port_default_value"
+ android:inputType="number" />
+ </PreferenceCategory>
+
<PreferenceCategory
android:key="full_screen"
android:title="@string/full_screen" >
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.2'
+ classpath 'com.android.tools.build:gradle:3.5.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
--- /dev/null
+Privacy Browser a deux objectifs principaux.
+
+1. Réduire au minimum la quantité d'informations envoyées sur Internet.
+
+2. Réduire au minimum la quantité d'informations stockées sur le périphérique.
+
+La plupart des navigateurs donnent silencieusement aux sites Web des quantités énormes d'informations leur permettant de vous suivre et de compromettre votre confidentialité. Les sites Web et les réseaux publicitaires utilisent des technologies telles que JavaScript, les cookies, le stockage DOM, les agents utilisateur et bien d'autres choses pour identifier chaque utilisateur de manière unique et le suivre entre chaque visite et au travers du Web.
+
+A l'inverse, les fonctionnalités sensibles sont désactivées par défaut dans Privacy Browser. Si l'une de ces technologies est nécessaire au bon fonctionnement d'un site Web, l'utilisateur peut choisir de l'activer uniquement pour une visite. Il peut également utiliser des paramètres de domaine pour activer automatiquement certaines fonctionnalités lors de l'arrivée sun site Web spécifique et les désactiver à nouveau lors de son départ.
+
+Privacy Browser utilise actuellement WebView intégré à Android pour le rendu des pages Web. En tant que tel, cela fonctionne mieux lorsque la dernière version de WebView est installée (voir https://www.stoutner.com/privacy-browser/common-settings/webview/). Dans la série 4.x, Privacy Browser basculera vers une version de WebView d’Android appelée Privacy WebView, qui permettra des fonctionnalités de confidentialité avancées.
+
+Avertissement: Android KitKat (version 4.4.x, API 19) fournit une version ancienne d’OpenSSL, exposée aux attaques de MITM (Man In The Middle) lors de la navigation sur des sites Web utilisant des suites de protocoles et de chiffrement obsolètes. Plus d'informations sur ce problème sont disponibles sur https://www.stoutner.com/kitkat-security-problems/.
+
+Fonctionnalités:
+• Blocage intégré des publicités EasyList.
+• Prise en charge du proxy Tor Orbot.
+• Épinglage de certificat SSL.
+• Importation / exportation des paramètres et des favoris.
\ No newline at end of file
--- /dev/null
+Un navigateur Web qui respecte votre vie privée.
\ No newline at end of file
--- /dev/null
+Privacy Browser
\ No newline at end of file