Skip to content

Instantly share code, notes, and snippets.

@firedfox
Created April 22, 2015 06:42
Show Gist options
  • Save firedfox/93809e854551eefc0161 to your computer and use it in GitHub Desktop.
Save firedfox/93809e854551eefc0161 to your computer and use it in GitHub Desktop.
#!/bin/bash
TARGET_URL='http://hm.baidu.com/h.js?5bd903f7f409c54caa0df0909fbf2a76';
TARGET_ETAG='cab267c293ff3512bd775692a76b1586';
EXPECT_RESPONSE_STATUS='304 Not Modified';
LOG_URL='http://q.hm.baidu.com/gfw-hijack-detector-server/log';
CONNECT_TIMEOUT=30;
LOAD_MAX_TIME=60;
DETECT_TOTAL_COUNT=5;
DETECT_INTERVAL=10;
targetFilename=`mktemp -t gfw-hijack-detector-target.$$.XXXXXXXXXX`;
headersFilename=`mktemp -t gfw-hijack-detector-headers.$$.XXXXXXXXXX`;
trap "rm -f $targetFilename $headersFilename; exit" 1 2 3 15
index=0;
while [ $index -lt $DETECT_TOTAL_COUNT ]; do
echo -n "[`date '+%Y-%m-%d %H:%M:%S'`] loading... ";
curl "$TARGET_URL" -s -D $headersFilename -o $targetFilename --connect-timeout $CONNECT_TIMEOUT -m $LOAD_MAX_TIME -H "If-None-Match: $TARGET_ETAG" -H 'Pragma: no-cache' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,ja;q=0.2,zh-TW;q=0.2' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://tongji.baidu.com/web/welcome/login' -H 'Cookie: HMACCOUNT=3DA6A9159BD50B91; BAIDUID=E8771DD54C31A260199524309585F81A:FG=1; Hm_lvt_79ab796e213df139704ee890c39e0bc2=1424929735,1425965176,1426040459; Hm_lpvt_79ab796e213df139704ee890c39e0bc2=1426040459; HMVT=09c5d4daddb9b6250ba93075257e58a2|1427689443|' -H 'Connection: keep-alive' -H 'Cache-Control: no-cache' --compressed;
if [ $? -eq 0 ]; then
echo -n 'checking... ';
head -n 1 $headersFilename | grep -q "$EXPECT_RESPONSE_STATUS";
if [ $? -eq 0 ]; then
echo 'ok';
curl -s "$LOG_URL" -d "status=0&msg=ok";
else
echo 'inject detected';
curl -s "$LOG_URL" -d "status=1&msg=inject detected" --data-urlencode "headers@$headersFilename" --data-urlencode "result@$targetFilename";
fi;
else
echo 'load failed';
curl -s "$LOG_URL" -d "status=2&msg=load failed";
fi
rm -f $targetFilename $headersFilename;
((index++));
sleep $DETECT_INTERVAL;
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment