Dodanie łagodniejszej wersji maila
This commit is contained in:
parent
e7dc46c45f
commit
bb86842c92
58
email-template-harsh.js
Normal file
58
email-template-harsh.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
function harsh_email_template() {
|
||||||
|
const text_html = /* HTML */ `<p>
|
||||||
|
Dzień dobry, w dniu ${getDate()} odwiedziłem stronę ${tab.url}. Strona ta
|
||||||
|
bez mojej zgody wysłała moje dane osobowe do następujących podmiotów:
|
||||||
|
</p>
|
||||||
|
${renderDataList()}
|
||||||
|
<p>
|
||||||
|
Informacje te są automatycznie wysyłane przez Państwa stronę przez
|
||||||
|
skrypty, które są na niej umieszczone. Pomimo faktu, że nie otrzymują
|
||||||
|
Państwo bezpośrednio i nie przechowują tych danych, w świetle RODO są
|
||||||
|
Państwo administratorem moich danych osobowych (utwierdza taki stan rzeczy
|
||||||
|
<a
|
||||||
|
href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=3313819"
|
||||||
|
>
|
||||||
|
wyrok TSUE w sprawie C‑40/17 </a
|
||||||
|
>). W załączeniu przesyłam zrzuty ekranów prezentujące wysłane przez
|
||||||
|
Państwa stronę dane osobowe, wraz z ich adresatami.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Dane te zostały przesłane bez mojej zgody i nastąpiło to zanim miałem w
|
||||||
|
ogóle szansę przeczytać Państwa politykę prywatności. Nie widzę zatem
|
||||||
|
przesłanki legalizującej takie przetwarzanie moich danych osobowych (na
|
||||||
|
pewno nie jest to przetwarzanie konieczne do wyświetlenia strony z
|
||||||
|
technicznego punktu widzenia). Jeżeli takie przesłanki legalizujące jednak
|
||||||
|
występują, proszę o ich wskazanie,
|
||||||
|
<strong> dla każdego z celów i podmiotów z osobna</strong>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Niniejszym zwracam się także z żądaniem wycofania przesłanych przez
|
||||||
|
Państwa stronę moich danych osobowych z baz wyżej wymienionych podmiotów
|
||||||
|
oraz przesłania potwierdzenia uwiarygadniającego pomyślne wycofanie tych
|
||||||
|
danych. Proszę też o przesłanie tożsamości podmiotów, które są
|
||||||
|
właścicielami wyżej wymienionych domen, abym mógł zapoznać się z ich
|
||||||
|
politykami prywatności.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Proszę też o wysłanie kopii danych zebranych na mój temat i wysłanych do
|
||||||
|
wyżej wymienionych podmiotów.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie
|
||||||
|
pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki
|
||||||
|
legalizującej dane są przetwarzane przez wspomniane podmioty trzecie, lub
|
||||||
|
tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować
|
||||||
|
prywatność innym użytkownikom Państwa strony. Polecam Państwa uwadze
|
||||||
|
oficjalne wytyczne EROD dotyczące zgody w kontekście RODO:
|
||||||
|
https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf
|
||||||
|
). Aby na przykład zapobiec automatycznemu wysyłaniu historii przeglądania
|
||||||
|
do podmiotów trzecich przez Państwa stronę, można po prostu ustawić
|
||||||
|
odpowiednio treść nagłówka
|
||||||
|
<a
|
||||||
|
href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy"
|
||||||
|
>
|
||||||
|
Referrer-Policy </a
|
||||||
|
>.
|
||||||
|
</p> `;
|
||||||
|
return text_html;
|
||||||
|
}
|
48
email-template-polite.js
Normal file
48
email-template-polite.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
function polite_email_template() {
|
||||||
|
const text_html = /* HTML */ `<p>
|
||||||
|
Dzień dobry, w dniu ${getDate()} odwiedziłem stronę ${tab.url}. Strona ta
|
||||||
|
bez mojej zgody wysłała moje dane osobowe do następujących podmiotów:
|
||||||
|
</p>
|
||||||
|
${renderDataList()}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Informacje te są automatycznie wysyłane przez Państwa stronę przez
|
||||||
|
skrypty, które są na niej umieszczone. Pomimo faktu, że nie otrzymują
|
||||||
|
Państwo bezpośrednio i nie przechowują tych danych, w świetle RODO są
|
||||||
|
Państwo administratorem moich danych osobowych (utwierdza taki stan rzeczy
|
||||||
|
<a
|
||||||
|
href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=3313819"
|
||||||
|
>
|
||||||
|
wyrok TSUE w sprawie C‑40/17 </a
|
||||||
|
>). W załączeniu przesyłam zrzuty ekranów prezentujące wysłane przez
|
||||||
|
Państwa stronę dane osobowe, wraz z ich adresatami.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Dane te zostały przesłane bez mojej zgody i nastąpiło to zanim miałem w
|
||||||
|
ogóle szansę przeczytać Państwa politykę prywatności. Nie widzę zatem
|
||||||
|
przesłanki legalizującej takie przetwarzanie moich danych osobowych (na
|
||||||
|
pewno nie jest to przetwarzanie konieczne do wyświetlenia strony z
|
||||||
|
technicznego punktu widzenia). Jeżeli takie przesłanki legalizujące jednak
|
||||||
|
występują, proszę o ich wskazanie,
|
||||||
|
<strong> dla każdego z celów i podmiotów z osobna</strong>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie
|
||||||
|
pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki
|
||||||
|
legalizującej dane są przetwarzane przez wspomniane podmioty trzecie, lub
|
||||||
|
tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować
|
||||||
|
prywatność innym użytkownikom Państwa strony. Polecam Państwa uwadze
|
||||||
|
oficjalne wytyczne EROD dotyczące zgody w kontekście RODO:
|
||||||
|
https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf
|
||||||
|
). Aby na przykład zapobiec automatycznemu wysyłaniu historii przeglądania
|
||||||
|
do podmiotów trzecich przez Państwa stronę, można po prostu ustawić
|
||||||
|
odpowiednio treść nagłówka
|
||||||
|
<a
|
||||||
|
href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy"
|
||||||
|
>
|
||||||
|
Referrer-Policy </a
|
||||||
|
>.
|
||||||
|
</p> `;
|
||||||
|
return text_html;
|
||||||
|
}
|
@ -1,5 +1,9 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<button id="clean">clean memory</button>
|
<button id="clean">clean memory</button>
|
||||||
<button id="copy">copy email template</button>
|
<button id="copy_harsh">copy harsh email template</button>
|
||||||
|
<button id="copy_polite">copy polite email template</button>
|
||||||
<div id="output"></div>
|
<div id="output"></div>
|
||||||
<script src="popup.js"></script>
|
<script src="popup.js"></script>
|
||||||
|
<script src="render-data-list.js"></script>
|
||||||
|
<script src="email-template-harsh.js"></script>
|
||||||
|
<script src="email-template-polite.js"></script>
|
||||||
|
95
popup.js
95
popup.js
@ -23,6 +23,12 @@ function sortByShorthost(tabdata) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function extractAllCookies(requests) {
|
||||||
|
return Array.from(new Set(requests.map((request) => request.cookie))).filter(
|
||||||
|
(cookie) => cookie !== undefined
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function render(memory = {}) {
|
function render(memory = {}) {
|
||||||
let output_txt = "";
|
let output_txt = "";
|
||||||
if (!memory?.[tabid]) {
|
if (!memory?.[tabid]) {
|
||||||
@ -30,11 +36,26 @@ function render(memory = {}) {
|
|||||||
output.innerHTML = output_txt;
|
output.innerHTML = output_txt;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
output_txt = /* HTML */ `<h2>
|
||||||
|
Część Twojej historii przeglądania została wysłana przez stronę ${tab.url}
|
||||||
|
do:
|
||||||
|
</h2>
|
||||||
|
<ul></ul>`;
|
||||||
sortByShorthost(memory[tabid]).forEach(([shorthost, requests]) => {
|
sortByShorthost(memory[tabid]).forEach(([shorthost, requests]) => {
|
||||||
output_txt += /* HTML */ `${shorthost} ${
|
output_txt += /* HTML */ `
|
||||||
atLeastOneCookiedRequest(requests) ? "🍪" : ""
|
<li>
|
||||||
}</br>`;
|
${shorthost}
|
||||||
|
${atLeastOneCookiedRequest(requests)
|
||||||
|
? /* HTML */ `🍪 <ul>
|
||||||
|
${extractAllCookies(requests)
|
||||||
|
.map((cookie) => `<li><code>${cookie}</code></li>`)
|
||||||
|
.join("\n")}
|
||||||
|
</ul>`
|
||||||
|
: ""}
|
||||||
|
</li>
|
||||||
|
`;
|
||||||
});
|
});
|
||||||
|
output_txt += "</ul>";
|
||||||
output.innerHTML = output_txt;
|
output.innerHTML = output_txt;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,65 +75,15 @@ function getDate() {
|
|||||||
return new Date().toISOString().split("T")[0];
|
return new Date().toISOString().split("T")[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
copy.onclick = () => {
|
copy_harsh.onclick = () => {
|
||||||
const text_html = /* HTML */ `<p>
|
const text_html = harsh_email_template();
|
||||||
Dzień dobry, w dniu ${getDate()} odwiedziłem stronę ${tab.url}. Strona ta
|
navigator.clipboard.write([
|
||||||
bez mojej zgody wysłała moje dane osobowe do następujących podmiotów:
|
new ClipboardItem({ "text/plain": text_html, "text/html": text_html }),
|
||||||
</p>
|
]);
|
||||||
<ul>
|
};
|
||||||
${sortByShorthost(memory[tabid])
|
|
||||||
.map(
|
copy_polite.onclick = () => {
|
||||||
([shorthost, requests]) => /* HTML */ `<li>
|
const text_html = polite_email_template();
|
||||||
Właściciel domeny <i>${shorthost}</i> otrzymał mój adres IP i część
|
|
||||||
mojej historii
|
|
||||||
przeglądania${atLeastOneCookiedRequest(requests)
|
|
||||||
? " <strong>opatrzoną sztucznie nadanym mi ID z Cookies</strong>"
|
|
||||||
: ""};
|
|
||||||
</li>`
|
|
||||||
)
|
|
||||||
.join("\n")}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Informacje te są automatycznie wysyłane przez Państwa stronę przez
|
|
||||||
skrypty, które są na niej umieszczone. Pomimo faktu, że nie otrzymują
|
|
||||||
Państwo bezpośrednio i nie przechowują tych danych, w świetle RODO są
|
|
||||||
Państwo administratorem moich danych osobowych (utwierdza taki stan rzeczy
|
|
||||||
<a
|
|
||||||
href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=3313819"
|
|
||||||
>
|
|
||||||
wyrok TSUE w sprawie C‑40/17 </a
|
|
||||||
>). W załączeniu przesyłam zrzuty ekranów prezentujące wysłane przez
|
|
||||||
Państwa stronę dane osobowe, wraz z ich adresatami.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Dane te zostały przesłane bez mojej zgody i nastąpiło to zanim miałem w
|
|
||||||
ogóle szansę przeczytać Państwa politykę prywatności. Nie widzę zatem
|
|
||||||
przesłanki legalizującej takie przetwarzanie moich danych osobowych (na
|
|
||||||
pewno nie jest to przetwarzanie konieczne do wyświetlenia strony z punktu
|
|
||||||
widzenia technicznego). Jeżeli takie przesłanki legalizujące jednak
|
|
||||||
występują, proszę o ich wskazanie, dla każdego z celów i podmiotów z
|
|
||||||
osobna.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Niniejszym zwracam się także z żądaniem wycofania przesłanych przez
|
|
||||||
Państwa stronę moich danych osobowych z baz wyżej wymienionych podmiotów
|
|
||||||
oraz przesłania potwierdzenia uwiarygadniającego pomyślne wycofanie tych
|
|
||||||
danych. Proszę też o przesłanie tożsamości podmiotów, które są
|
|
||||||
właścicielami wyżej wymienionych domen, abym mógł zapoznać się z ich
|
|
||||||
politykami prywatności.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Proszę też o wysłanie kopii danych zebranych na mój temat i wysłanych do
|
|
||||||
wyżej wymienionych podmiotów.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie
|
|
||||||
pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki
|
|
||||||
legalizującej dane są przetwarzane przez wspomniane podmioty trzecie, lub
|
|
||||||
tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować
|
|
||||||
prywatność innym użytkownikom Państwa strony.
|
|
||||||
</p> `;
|
|
||||||
navigator.clipboard.write([
|
navigator.clipboard.write([
|
||||||
new ClipboardItem({ "text/plain": text_html, "text/html": text_html }),
|
new ClipboardItem({ "text/plain": text_html, "text/html": text_html }),
|
||||||
]);
|
]);
|
||||||
|
@ -2,10 +2,31 @@ console.log("PROBLEMATIC REQUESTS");
|
|||||||
|
|
||||||
let memory = {};
|
let memory = {};
|
||||||
|
|
||||||
|
function gethost(url) {
|
||||||
|
return new URL(request.url).host;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getshorthost(host) {
|
||||||
|
console.log("getshort", host);
|
||||||
|
return host.split(".").slice(-2).join(".");
|
||||||
|
}
|
||||||
|
|
||||||
// const isThirdParty = (arg) => arg.urlClassification.thirdParty.length > 0;
|
// const isThirdParty = (arg) => arg.urlClassification.thirdParty.length > 0;
|
||||||
async function isThirdParty(request) {
|
async function isThirdParty(request) {
|
||||||
const request_url = new URL(request.url);
|
const request_url = new URL(request.url);
|
||||||
const origin_url = new URL(await getOrigin(request));
|
const origin_url = new URL(await getOrigin(request));
|
||||||
|
/* console.log(request_url.ho, origin_url, request_url.includes(origin_url)); */
|
||||||
|
console.log(
|
||||||
|
request_url.host,
|
||||||
|
origin_url.host,
|
||||||
|
request_url.host.includes(origin_url.host)
|
||||||
|
);
|
||||||
|
if (request_url.host.includes(origin_url.host)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getshorthost(request_url.host) == getshorthost(origin_url.host)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
request_url.origin != origin_url.origin ||
|
request_url.origin != origin_url.origin ||
|
||||||
request.urlClassification.thirdParty.length > 0
|
request.urlClassification.thirdParty.length > 0
|
||||||
@ -45,13 +66,15 @@ browser.webRequest.onBeforeSendHeaders.addListener(
|
|||||||
if (!memory[request.tabId]) {
|
if (!memory[request.tabId]) {
|
||||||
memory[request.tabId] = {};
|
memory[request.tabId] = {};
|
||||||
}
|
}
|
||||||
const shorthost = new URL(request.url).host
|
const shorthost = getshorthost(new URL(request.url).host);
|
||||||
.match(/((\.[^.]+){2}$)/)[0]
|
|
||||||
.slice(1);
|
|
||||||
if (!memory[request.tabId][shorthost]) {
|
if (!memory[request.tabId][shorthost]) {
|
||||||
memory[request.tabId][shorthost] = [];
|
memory[request.tabId][shorthost] = [];
|
||||||
}
|
}
|
||||||
memory[request.tabId][shorthost].push({ url: request.url, has_cookie });
|
memory[request.tabId][shorthost].push({
|
||||||
|
url: request.url,
|
||||||
|
has_cookie,
|
||||||
|
cookie: request.requestHeaders.find((h) => h.name == "Cookie")?.value,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ urls: ["<all_urls>"] },
|
{ urls: ["<all_urls>"] },
|
||||||
|
15
render-data-list.js
Normal file
15
render-data-list.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
function renderDataList() {
|
||||||
|
return /* HTML */ ` <ul>
|
||||||
|
${sortByShorthost(memory[tabid])
|
||||||
|
.map(
|
||||||
|
([shorthost, requests]) => /* HTML */ `<li>
|
||||||
|
właściciel domeny <i>${shorthost}</i> otrzymał mój adres IP i część
|
||||||
|
mojej historii
|
||||||
|
przeglądania${atLeastOneCookiedRequest(requests)
|
||||||
|
? " <strong>opatrzoną sztucznie nadanym mi ID z Cookies</strong>"
|
||||||
|
: ""};
|
||||||
|
</li>`
|
||||||
|
)
|
||||||
|
.join("\n")}
|
||||||
|
</ul>`;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user