Add firefox bloating (przedplamienie FF) #34

Merged
arek merged 10 commits from #29 into master 2022-11-29 12:45:47 +01:00
Owner
No description provided.
kuba was assigned by arek 2022-07-24 14:40:49 +02:00
arek added 1 commit 2022-07-24 14:40:50 +02:00
arek added 1 commit 2022-07-24 14:41:37 +02:00
kuba requested changes 2022-07-27 15:43:56 +02:00
kuba left a comment
Owner

Kilka drobnych rzeczy wyszło. Plus proszę wrzuć to na brancha o nazwie bez #, bo na tego #29 nie mogę się lokalnie zcheckoutować :(

Kilka drobnych rzeczy wyszło. Plus proszę wrzuć to na brancha o nazwie bez `#`, bo na tego `#29` nie mogę się lokalnie zcheckoutować :(
@ -0,0 +1,32 @@
#!/bin/bash
Owner

uwaga ortograficzna co do nazwy pliku - bloater - przez jedno t ;)

uwaga ortograficzna co do nazwy pliku - `bloater` - przez jedno `t` ;)
arek marked this conversation as resolved
@ -0,0 +1,32 @@
#!/bin/bash
BLOATING_DOMAINS=$(while IFS= read -r line; do echo "$line"
Owner

Jeżeli chcemy tutaj wczytać treść wielolinijkowego pliku do zmiennej BLOATING_DOMAINS, to wystarczy zrobić

BLOATING_DOMAINS=$(cat bloating-domains.txt)
Jeżeli chcemy tutaj wczytać treść wielolinijkowego pliku do zmiennej `BLOATING_DOMAINS`, to wystarczy zrobić ``` BLOATING_DOMAINS=$(cat bloating-domains.txt) ```
arek marked this conversation as resolved
@ -0,0 +10,4 @@
DOMAINS=$(printf '%s\n' "${BLOATING_DOMAINS[@]}")
else
echo "Bloating Firefox by requested domain list..."
DOMAINS=$FILTERED_DOMAINS
Owner

tutaj siegamy do zmiennej definiowanej poza funkcją - to może spowodować niepożądane zachowania.

Proponuję zmienic kształt tej funkcji tak, aby wywołanie było uzaleznione od ilości argumentów. Można jej podać albo:

  • zero argumentów (wtedy jest używana domyślna wbudowana lista wczytywana z pliku)
  • jeden argument - listę domen do splamienia - wtedy jest używana ta podana lista

Aby sprawdzić, ile argumentów było podane do funkcji, możemy użyć $#:

if [ "$#" = 0 ]; then
tutaj siegamy do zmiennej definiowanej poza funkcją - to może spowodować niepożądane zachowania. Proponuję zmienic kształt tej funkcji tak, aby wywołanie było uzaleznione od ilości argumentów. Można jej podać albo: * zero argumentów (wtedy jest używana domyślna wbudowana lista wczytywana z pliku) * jeden argument - listę domen do splamienia - wtedy jest używana ta podana lista Aby sprawdzić, ile argumentów było podane do funkcji, możemy użyć `$#`: ```bash if [ "$#" = 0 ]; then ```
arek marked this conversation as resolved
@ -0,0 +15,4 @@
while IFS= read -r DOMAIN; do
# these domains return a 404 anyways, no need to waste time on them:
if is_http_error "$DOMAIN"; then echo "skipping $DOMAIN"; continue; fi
Owner

wszystko pomiędzy while i done dla czytelności warto wciąć o dodatkowego tab-a

wszystko pomiędzy `while` i `done` dla czytelności warto wciąć o dodatkowego tab-a
arek marked this conversation as resolved
@ -12,2 +13,4 @@
URL=$(unquote $(echo $INPUT | jq .url))
DOMAINS=`node array-to-lines.js "$(echo $INPUT | jq .third_party_domains)"`
FILTERED_DOMAINS=`node filter-requested-domains.js "$(echo $INPUT | jq .third_party_domains)"`
Owner

filtrowanie domen, jak i decydowanie o tym, czy plamić firefoxa, czy nie, najlepiej przenieść do body funkcji bloat_firefox. Wtedy główny skrypt będzie znacznie prostszy

filtrowanie domen, jak i decydowanie o tym, czy plamić firefoxa, czy nie, najlepiej przenieść do body funkcji `bloat_firefox`. Wtedy główny skrypt będzie znacznie prostszy
arek marked this conversation as resolved
Author
Owner

Żeby się zcheckoutować musisz dać git checkout '#29'

Żeby się zcheckoutować musisz dać `git checkout '#29'`
Owner

Ok, sorry, robiłem te komendy w złym repozytorium xD Wszystko jest nazwą barncha ok. Pozostałe komentarze podtrzymuję :)

Ok, sorry, robiłem te komendy w złym repozytorium xD Wszystko jest nazwą barncha ok. Pozostałe komentarze podtrzymuję :)
arek added 1 commit 2022-07-31 12:19:42 +02:00
arek requested review from kuba 2022-07-31 12:20:22 +02:00
kuba requested changes 2022-08-14 10:13:05 +02:00
@ -0,0 +28,4 @@
grab "$DOMAIN after"
done <<< "$DOMAINS"
else
echo "No need to blot"
Owner

(typo) blot -> bloat

(typo) blot -> bloat
arek marked this conversation as resolved
@ -42,3 +33,1 @@
sleep 1.5
grab "$DOMAIN after"
done <<< "$DOMAINS"
bloat_firefox $INPUT
Owner

$INPUT to jest cały JSON z różnymi parametrami dla SS. Chyba chodziło tu o przekazanie $DOMAINS?

`$INPUT` to jest cały JSON z różnymi parametrami dla SS. Chyba chodziło tu o przekazanie `$DOMAINS`?
Author
Owner

Yup i w bloater.sh robimy:

DOMAINS=`node filter-requested-domains.js "$(echo $1 | jq .third_party_domains)"`
Yup i w `bloater.sh` robimy: ``` DOMAINS=`node filter-requested-domains.js "$(echo $1 | jq .third_party_domains)"` ```
Owner

W istocie - rzecz polega na tym, że w bloater.sh patrzymy tylko w .third_party_domains i odrzucamy całą resztę JSON-a. Więc możemy przekazać do tej funkcji już wyciągnięte domeny, które tworzymy sobie w linijsce 15 w run-analysis.sh. I wtedy wystarczy zrobić przy wywołaniu:

bloat_firefox "$DOMAINS"

a w kodzie bloat_firefox:

DOMAINS=`node filter-requested-domains.js "$1"`

Zmniejszymy w ten sposób ilość wołanych binarek

W istocie - rzecz polega na tym, że w bloater.sh patrzymy tylko w `.third_party_domains` i odrzucamy całą resztę JSON-a. Więc możemy przekazać do tej funkcji już wyciągnięte domeny, które tworzymy sobie w linijsce 15 w `run-analysis.sh`. I wtedy wystarczy zrobić przy wywołaniu: ```sh bloat_firefox "$DOMAINS" ``` a w kodzie bloat_firefox: ```sh DOMAINS=`node filter-requested-domains.js "$1"` ``` Zmniejszymy w ten sposób ilość wołanych binarek
arek added 1 commit 2022-08-16 12:42:34 +02:00
arek requested review from kuba 2022-08-16 12:46:14 +02:00
arek added 1 commit 2022-09-12 09:50:19 +02:00
Author
Owner

Poprawione

Poprawione
kuba added 1 commit 2022-09-12 19:22:55 +02:00
kuba refused to review 2022-09-12 19:25:30 +02:00
kuba added 1 commit 2022-09-12 19:35:10 +02:00
Owner

Wysłałem małego update'a, w którym skróciłem trochę listę podmiotów do przedplamienia. Usunąłem te podmioty, które występują w trakcie analiz rzadziej, niż się spodziewałem.

Jest problem, przedplamienie nie działa. Kroki do odtworzenia:

  1. npm start
  2. odwiedzić localhost:3000 i wpisać w URL https://patrizia.aryton.pl/content/2-polityka-prywatnosci, a w liście domen podać facebook.com,linkedin.com
  3. Pojawia się error:
{"url":"https://patrizia.aryton.pl/content/2-polityka-prywatnosci","third_party_domains":["facebook.com","linkedin.com"]}
Bloating Firefox by requested domain list...
undefined:1
facebook.com
  ^

SyntaxError: Unexpected token c in JSON at position 2
    at JSON.parse ()
    at Object. (/opt/filter-requested-domains.js:7:32)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47
selected domains

i nie ma żadnych screenshotów

Wysłałem małego update'a, w którym skróciłem trochę listę podmiotów do przedplamienia. Usunąłem te podmioty, które występują w trakcie analiz rzadziej, niż się spodziewałem. Jest problem, przedplamienie nie działa. Kroki do odtworzenia: 1. npm start 2. odwiedzić localhost:3000 i wpisać w URL `https://patrizia.aryton.pl/content/2-polityka-prywatnosci`, a w liście domen podać `facebook.com,linkedin.com` 3. Pojawia się error: ``` {"url":"https://patrizia.aryton.pl/content/2-polityka-prywatnosci","third_party_domains":["facebook.com","linkedin.com"]} Bloating Firefox by requested domain list... undefined:1 facebook.com ^ SyntaxError: Unexpected token c in JSON at position 2 at JSON.parse () at Object. (/opt/filter-requested-domains.js:7:32) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 selected domains ``` i nie ma żadnych screenshotów
arek added 3 commits 2022-11-20 13:09:41 +01:00
arek requested review from kuba 2022-11-20 13:09:52 +01:00
Author
Owner

Poprawiłem, wszystko śmiga!

Poprawiłem, wszystko śmiga!
kuba approved these changes 2022-11-29 12:38:15 +01:00
kuba left a comment
Owner

Przetestowałem u siebie i działa, super! <3

Przetestowałem u siebie i działa, super! <3
arek merged commit e83113bbde into master 2022-11-29 12:45:47 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: icd/screenshot-service#34
No description provided.