Add firefox bloating (przedplamienie FF) #34
4
@types/src/request.d.ts
vendored
4
@types/src/request.d.ts
vendored
|
@ -1,5 +1,7 @@
|
||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
|
/// <reference types="node" />
|
||||||
import { ChildProcessWithoutNullStreams } from "child_process";
|
import { ChildProcessWithoutNullStreams } from "child_process";
|
||||||
|
import { Readable } from "stream";
|
||||||
export declare type Image = {
|
export declare type Image = {
|
||||||
url: string;
|
url: string;
|
||||||
domain: string;
|
domain: string;
|
||||||
|
@ -40,7 +42,9 @@ export default class ScreenshotRequest {
|
||||||
current_action: string;
|
current_action: string;
|
||||||
preview: string;
|
preview: string;
|
||||||
}>;
|
}>;
|
||||||
|
getPreviewURL(): Promise<string>;
|
||||||
getGoodImages(): Image[];
|
getGoodImages(): Image[];
|
||||||
setFinished(): void;
|
setFinished(): void;
|
||||||
exec(): Promise<void>;
|
exec(): Promise<void>;
|
||||||
|
getZIP(): Readable;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
const input = process.argv[2];
|
const input = process.argv[2];
|
||||||
const array = JSON.parse(input);
|
const array = JSON.parse(input);
|
||||||
for (let i in array) {
|
for (let i in array) {
|
||||||
console.log(array[i]);
|
console.log(array[i]);
|
||||||
}
|
}
|
||||||
|
|
35
Docker/bloater.sh
Executable file
35
Docker/bloater.sh
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
#!/bin/bash
|
||||||
|
BLOATING_DOMAINS=$(cat bloating-domains.txt)
|
||||||
|
|
||||||
|
bloat_firefox(){
|
||||||
|
if [ "$#" = 0 ]; then
|
||||||
|
echo "Bloating Firefox by bloating defined domain list..."
|
||||||
|
DOMAINS_LIST=$(printf '%s\n' "${BLOATING_DOMAINS[@]}")
|
||||||
|
else
|
||||||
|
echo "Bloating Firefox by requested domain list..."
|
||||||
|
DOMAINS_LIST=`node filter-requested-domains.js "$1"`
|
||||||
|
echo "selected domains"
|
||||||
|
echo $DOMAINS_LIST
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$DOMAINS_LIST" ]; then
|
||||||
|
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
|
||||||
|
load_website "$DOMAIN?hl=pl" "$DOMAIN"
|
||||||
|
sleep 1 # sometimes the consent popup needs a little time
|
||||||
|
open_console
|
||||||
|
grab "$DOMAIN before"
|
||||||
|
(tr '\n' ' ' < click-accept-all.js) | xclip -sel clip
|
||||||
|
keycombo Control_L v
|
||||||
|
sleep 0.3
|
||||||
|
xdotool key Return
|
||||||
|
sleep 1.5
|
||||||
|
grab "$DOMAIN after"
|
||||||
|
done <<< "$DOMAINS_LIST"
|
||||||
|
else
|
||||||
|
echo "No need to bloat"
|
||||||
arek marked this conversation as resolved
Outdated
|
|||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
6
Docker/bloating-domains.txt
Normal file
6
Docker/bloating-domains.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
facebook.com
|
||||||
|
google.com
|
||||||
|
hotjar.com
|
||||||
|
maps.google.com
|
||||||
|
linkedin.com
|
||||||
|
cookielaw.org
|
15
Docker/filter-requested-domains.js
Normal file
15
Docker/filter-requested-domains.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
const pth = require("path");
|
||||||
|
const BLOATING_DOMAINS = (
|
||||||
|
fs.readFileSync(pth.join(__dirname, "bloating-domains.txt")) + ""
|
||||||
|
).split("\n");
|
||||||
|
const input = process.argv[2];
|
||||||
|
const REQUESTED_DOMAINS = input.split('\n');
|
||||||
|
|
||||||
|
const array_diff = REQUESTED_DOMAINS.filter(
|
||||||
|
(v) => !BLOATING_DOMAINS.includes(v)
|
||||||
|
);
|
||||||
|
|
||||||
|
for (let i in array_diff) {
|
||||||
|
console.log(array_diff[i]);
|
||||||
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
source ./ephemeral-x.sh
|
source ./ephemeral-x.sh
|
||||||
source ./annotate_header.sh
|
source ./annotate_header.sh
|
||||||
source ./utils.sh
|
source ./utils.sh
|
||||||
|
source ./bloater.sh
|
||||||
|
|
||||||
echo "{\"current_action\": \"Uruchamianie serwera X\"}"
|
echo "{\"current_action\": \"Uruchamianie serwera X\"}"
|
||||||
|
|
||||||
|
@ -11,6 +12,9 @@ start_firefox
|
||||||
grab start_firefox
|
grab start_firefox
|
||||||
prepare_firefox
|
prepare_firefox
|
||||||
grab prepare_firefox
|
grab prepare_firefox
|
||||||
|
bloat_firefox
|
||||||
|
grab bloat_firefox
|
||||||
|
|
||||||
echo "{\"current_action\": \"Oczekiwanie na URL do analizy...\", \"code\": \"ready\"}"
|
echo "{\"current_action\": \"Oczekiwanie na URL do analizy...\", \"code\": \"ready\"}"
|
||||||
./eternal-sleep.sh &
|
./eternal-sleep.sh &
|
||||||
wait
|
wait
|
||||||
|
|
|
@ -10,10 +10,13 @@ unquote(){
|
||||||
echo $1 | sed 's/"//g'
|
echo $1 | sed 's/"//g'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
echo $INPUT
|
||||||
|
|
||||||
URL=$(unquote $(echo $INPUT | jq .url))
|
URL=$(unquote $(echo $INPUT | jq .url))
|
||||||
DOMAINS=`node array-to-lines.js "$(echo $INPUT | jq .third_party_domains)"`
|
DOMAINS=`node array-to-lines.js "$(echo $INPUT | jq .third_party_domains)"`
|
||||||
arek marked this conversation as resolved
Outdated
kuba
commented
filtrowanie domen, jak i decydowanie o tym, czy plamić firefoxa, czy nie, najlepiej przenieść do body funkcji 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
|
|||||||
|
|
||||||
source ./utils.sh
|
source ./utils.sh
|
||||||
|
source ./bloater.sh
|
||||||
|
|
||||||
PREVIEW="TRUE" # set to "TRUE" in order to enable automatic screenshots kept in preview.png
|
PREVIEW="TRUE" # set to "TRUE" in order to enable automatic screenshots kept in preview.png
|
||||||
|
|
||||||
|
@ -28,21 +31,8 @@ fi
|
||||||
|
|
||||||
ORIGIN_DOMAIN=$(sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/' <<< "$URL")
|
ORIGIN_DOMAIN=$(sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/' <<< "$URL")
|
||||||
|
|
||||||
kuba
commented
`$INPUT` to jest cały JSON z różnymi parametrami dla SS. Chyba chodziło tu o przekazanie `$DOMAINS`?
arek
commented
Yup i w
Yup i w `bloater.sh` robimy:
```
DOMAINS=`node filter-requested-domains.js "$(echo $1 | jq .third_party_domains)"`
```
kuba
commented
W istocie - rzecz polega na tym, że w bloater.sh patrzymy tylko w
a w kodzie bloat_firefox:
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
|
|||||||
|
bloat_firefox "$DOMAINS"
|
||||||
while IFS= read -r DOMAIN; do
|
grab bloat_firefox
|
||||||
# these domains return a 404 anyways, no need to waste time on them:
|
|
||||||
if is_http_error "$DOMAIN"; then echo "skipping $DOMAIN"; continue; fi
|
|
||||||
load_website "$DOMAIN?hl=pl" "$DOMAIN"
|
|
||||||
sleep 1 # sometimes the consent popup needs a little time
|
|
||||||
open_console
|
|
||||||
grab "$DOMAIN before"
|
|
||||||
(tr '\n' ' ' < click-accept-all.js) | xclip -sel clip
|
|
||||||
keycombo Control_L v
|
|
||||||
sleep 0.3
|
|
||||||
xdotool key Return
|
|
||||||
sleep 1.5
|
|
||||||
grab "$DOMAIN after"
|
|
||||||
done <<< "$DOMAINS"
|
|
||||||
|
|
||||||
click 1270 217 # the "trash" icon, so requests from plamienie don't appear in the screenshots
|
click 1270 217 # the "trash" icon, so requests from plamienie don't appear in the screenshots
|
||||||
|
|
||||||
|
|
1
package-lock.json
generated
1
package-lock.json
generated
|
@ -5,6 +5,7 @@
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
|
"name": "screenshot-service",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -58,6 +58,7 @@ router.get("/", async (ctx) => {
|
||||||
type="text"
|
type="text"
|
||||||
name="domains"
|
name="domains"
|
||||||
id="domains"
|
id="domains"
|
||||||
|
style="width: calc(100vw - 30%)"
|
||||||
value="doubleclick.net,facebook.com"
|
value="doubleclick.net,facebook.com"
|
||||||
/>
|
/>
|
||||||
<br />
|
<br />
|
||||||
|
|
Loading…
Reference in New Issue
Block a user
(typo) blot -> bloat