screenshot-service/Docker/run-analysis.sh

109 lines
2.4 KiB
Bash
Raw Normal View History

2022-05-05 21:54:34 +02:00
#!/bin/bash
2022-02-24 00:24:13 +01:00
2022-06-17 09:37:27 +02:00
export DISPLAY=:0
2022-04-24 18:09:36 +02:00
INPUT="$1"
ID=$2
unquote(){
echo $1 | sed 's/"//g'
}
URL=$(unquote $(echo $INPUT | jq .url))
DOMAINS=`node array-to-lines.js "$(echo $INPUT | jq .third_party_domains)"`
source ./utils.sh
2022-04-24 19:57:01 +02:00
2022-07-15 08:17:29 +02:00
PREVIEW="TRUE" # set to "TRUE" in order to enable automatic screenshots kept in preview.png
2022-05-27 15:49:56 +02:00
if [ "$PREVIEW" = "TRUE" ];
then
(while true; do
grab_screen_to_public $ID
sleep 1
done) &
refresher_pid=$!;
fi
2022-07-08 10:40:16 +02:00
ORIGIN_DOMAIN=$(sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/' <<< "$URL")
2022-05-27 15:49:56 +02:00
2022-07-09 20:04:57 +02:00
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"
2022-07-09 20:04:57 +02:00
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
2022-07-09 20:04:57 +02:00
grab "$DOMAIN after"
done <<< "$DOMAINS"
click 1270 217 # the "trash" icon, so requests from plamienie don't appear in the screenshots
load_website "$URL" "$URL"
echo "{\"current_action\": \"Strona wczytana\"}"
2022-04-24 18:09:36 +02:00
grab load_website
open_network_inspector
2022-04-24 18:09:36 +02:00
grab open_network_inspector
declare -a pids;
pids=()
2022-02-24 00:24:13 +01:00
2022-02-14 22:10:01 +01:00
2022-04-24 18:09:36 +02:00
index=0
mkdir -p "/opt/static/$ID"
while IFS= read -r DOMAIN; do
if [ "$DOMAIN" = "" ]; then
continue
fi
echo "{\"current_action\": \"Skanowanie skryptów z domeny $DOMAIN...\"}"
network_inspector_search "domain:$DOMAIN " # can filter with more granularity: https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor/request_list#filtering_by_properties
2022-06-15 20:27:15 +02:00
# grab ni_search
2022-04-24 18:09:36 +02:00
count=0
while network_inspector_has_more_entries
do
screenshot_and_annotate "$ID" $index "$DOMAIN" "$ORIGIN_DOMAIN" &
2022-04-24 18:09:36 +02:00
pids+=($!)
((index++))
while network_inspector_headers_need_scrolling
do
xdotool mousemove 2400 1000
echo "SCROLLING DOWN"
xdotool click 5 click 5 click 5 # scroll down
sleep 0.1
screenshot_and_annotate "$ID" $index "$DOMAIN" "$ORIGIN_DOMAIN" &
pids+=($!)
((index++))
done
network_inspector_next_entry
2022-04-24 18:09:36 +02:00
((count++))
if [ $count -gt 10 ]; then
break;
fi
done
done <<< "$DOMAINS"
2022-05-27 15:49:56 +02:00
if [ "$PREVIEW" = "TRUE" ];
then
kill $refresher_pid;
fi
2022-04-24 19:57:01 +02:00
echo "{\"current_action\": \"Kończenie...\"}"
2022-02-13 22:30:56 +01:00
for PID in "${pids[@]}"
2022-02-24 00:24:13 +01:00
do
wait $PID
2022-02-24 00:24:13 +01:00
done
2022-02-13 22:30:56 +01:00
kill -2 %%;
cleanup
2022-02-24 00:24:13 +01:00
echo "Done!"