init
This commit is contained in:
commit
c257c13816
34
README
Normal file
34
README
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
What is randrss?
|
||||||
|
================
|
||||||
|
Normal RSS readers usually fetch all feeds more or less at the same time
|
||||||
|
at constant intervals. This leaves a signature for anyone who observes
|
||||||
|
internet traffic. By looking for this pattern, you are more easily
|
||||||
|
identified.
|
||||||
|
|
||||||
|
randrss fetches all your feeds at random intervals at an random order
|
||||||
|
over a certain period of time. The feeds will be downloaded and all
|
||||||
|
you need is a local webserver. The added benefits of this approach are
|
||||||
|
that you don't have to worry about how your client deals with cookies
|
||||||
|
etc.
|
||||||
|
|
||||||
|
Also, by having only one client fetching the feeds and your readers
|
||||||
|
pointed to the randrss's downloaded feeds, you avoid certain trackers
|
||||||
|
that may identify you across devices (google's feed proxy, cloudflare),
|
||||||
|
because it's very likely that the combination of feeds you read are
|
||||||
|
unique.
|
||||||
|
|
||||||
|
randrss fetches the feed using Tor.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
First, tweak the shellscript a bit, if you like
|
||||||
|
The input file has the following format per line:
|
||||||
|
url:output file:(optional paramater for the sleep time, in format x-y)
|
||||||
|
|
||||||
|
An optional user agent file contains the user agents we will randomly
|
||||||
|
use per feed. One user agent per line.
|
||||||
|
|
||||||
|
randrss [input file] [user agent file]
|
||||||
|
|
||||||
|
|
||||||
|
|
5
TODO
Normal file
5
TODO
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
-cert pinning option
|
||||||
|
-Causing more harm than good because do not match exactly the headers
|
||||||
|
sent by the user agents we use.
|
||||||
|
-how random is "shuf" and is it a problem?
|
||||||
|
-update random default on every loop?
|
36
randrss
Executable file
36
randrss
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -x
|
||||||
|
set -e
|
||||||
|
random_default=$( shuf -n 1 -i7200-7523)
|
||||||
|
DEFAULT_PER_ITEM="1-$random_default"
|
||||||
|
|
||||||
|
echo "Current default sleep seconds range: $DEFAULT_PER_ITEM"
|
||||||
|
if [ $# -lt 1 ] ; then
|
||||||
|
echo "Usage: $0 [input feeds]"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
inputfile="$1"
|
||||||
|
useragentsfile="$2"
|
||||||
|
if [ ! -f "$inputfile" ] ; then
|
||||||
|
echo "inputfile does not exist or is not readable"
|
||||||
|
fi
|
||||||
|
while true ; do
|
||||||
|
shuf "$inputfile" | while read line ; do
|
||||||
|
url=$( echo "$line" | cut -d":" -f1,2 )
|
||||||
|
output=$( echo "$line" | cut -d":" -f3)
|
||||||
|
range=$( echo "$line" | cut -d":" -f4)
|
||||||
|
sleepfor=0
|
||||||
|
if [ -n "$range" ] ; then
|
||||||
|
sleepfor=$( shuf -i "$range" -n 1)
|
||||||
|
else
|
||||||
|
sleepfor=$( shuf -i "$DEFAULT_PER_ITEM" -n 1)
|
||||||
|
fi
|
||||||
|
useragent=""
|
||||||
|
if [ -n "$useragentsfile" ] ; then
|
||||||
|
useragent=$( shuffle -n 1 "$useragentsfile" )
|
||||||
|
fi
|
||||||
|
echo "Sleeping for $sleepfor seconds for $url"
|
||||||
|
sleep "$sleepfor"
|
||||||
|
torsocks wget "$url" -U "$useragent" -O "$output"
|
||||||
|
done
|
||||||
|
done
|
Loading…
x
Reference in New Issue
Block a user