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" />
 | ||||
| import { ChildProcessWithoutNullStreams } from "child_process"; | ||||
| import { Readable } from "stream"; | ||||
| export declare type Image = { | ||||
|     url: string; | ||||
|     domain: string; | ||||
| @ -40,7 +42,9 @@ export default class ScreenshotRequest { | ||||
|         current_action: string; | ||||
|         preview: string; | ||||
|     }>; | ||||
|     getPreviewURL(): Promise<string>; | ||||
|     getGoodImages(): Image[]; | ||||
|     setFinished(): void; | ||||
|     exec(): Promise<void>; | ||||
|     getZIP(): Readable; | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| const input = process.argv[2]; | ||||
| const array = JSON.parse(input); | ||||
| 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 ./annotate_header.sh | ||||
| source ./utils.sh | ||||
| source ./bloater.sh | ||||
| 
 | ||||
| echo "{\"current_action\": \"Uruchamianie serwera X\"}" | ||||
| 
 | ||||
| @ -11,6 +12,9 @@ start_firefox | ||||
| grab start_firefox | ||||
| prepare_firefox | ||||
| grab prepare_firefox | ||||
| bloat_firefox | ||||
| grab bloat_firefox | ||||
| 
 | ||||
| echo "{\"current_action\": \"Oczekiwanie na URL do analizy...\", \"code\": \"ready\"}" | ||||
| ./eternal-sleep.sh & | ||||
| wait | ||||
|  | ||||
| @ -10,10 +10,13 @@ unquote(){ | ||||
|   echo $1 | sed 's/"//g' | ||||
| } | ||||
| 
 | ||||
| echo $INPUT | ||||
| 
 | ||||
| URL=$(unquote $(echo $INPUT | jq .url)) | ||||
| 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 ./bloater.sh | ||||
| 
 | ||||
| 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") | ||||
| 
 | ||||
| 
				
					
						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 | ||||
| 
 | ||||
| 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" | ||||
| bloat_firefox "$DOMAINS" | ||||
| grab bloat_firefox | ||||
| 
 | ||||
| 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, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "screenshot-service", | ||||
|       "version": "1.0.0", | ||||
|       "license": "ISC", | ||||
|       "dependencies": { | ||||
|  | ||||
| @ -58,6 +58,7 @@ router.get("/", async (ctx) => { | ||||
|             type="text" | ||||
|             name="domains" | ||||
|             id="domains" | ||||
|             style="width: calc(100vw - 30%)" | ||||
|             value="doubleclick.net,facebook.com" | ||||
|           /> | ||||
|           <br /> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	
(typo) blot -> bloat