Compare commits

..

No commits in common. "master" and "tobast_last_minute" have entirely different histories.

5 changed files with 12 additions and 48 deletions

View file

@ -1,6 +1,3 @@
# mpri-webdam
Generate realistic fake browsing histories for borderline and/or activists
users, to hide real traffic from global surveillance.
Lacks proper documentation at the moment `:(`
Générer tout plein de faux historiques. Parce qu'il faut bien valider ce cours.

View file

@ -13,13 +13,6 @@
"query_pattern":"?q={}"
}
},
{
"searchengine": {
"name":"Duckduckgo Lite",
"url":"https://duckduckgo.com/lite/",
"query_pattern":"?q={}"
}
},
{
"searchengine": {
"name":"Qwant",

View file

@ -1,16 +0,0 @@
from django.core.management.base import BaseCommand
from profiles import models as profiles
from histories.models import generate_history
from datetime import datetime
class Command(BaseCommand):
''' Generates an history and prints the related XML '''
def add_arguments(self, parser):
pass
def handle(self, *args, **kwargs):
prof = profiles.Profile.objects.all()[0]
history = generate_history(prof, datetime.now())
print(history.to_xml_string())

View file

@ -5,7 +5,6 @@ interests, keywords...
from collections import namedtuple
import random
import asyncio
from math import floor
from xml.etree import ElementTree as ET
from datetime import datetime
@ -108,18 +107,15 @@ class History(models.Model):
output += str(entry) + '\n'
return output
async def _handler(self):
runner = await TorInstance.create(self.return_history(), self.user.browser_fingerprint.serialize_headers())
await runner.run()
self.played = True
self.save()
def play_histories(self):
async def play_histories(self):
""" Actually plays the history.
"""
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(asyncio.wait([self._handler()]))
self.played = True
runner = await TorInstance.create(
self.return_history(),
self.user.browser_fingerprint.serialize_headers())
runner.run()
self.save()
def to_xml(self, xml_root=None):
''' Exports the current history to xml '''
@ -140,10 +136,6 @@ class History(models.Model):
if standalone:
return xml_root
def to_xml_string(self):
xml = self.to_xml()
return ET.tostring(xml)
@staticmethod
def from_xml(xml_root):
''' Loads an history from an XML file '''
@ -187,6 +179,7 @@ def generate_partial_history(user, t_start):
timestamp = t_start
result = []
basis = generate_first_url(user)
result.append(PartialHistoryEntry(basis, timestamp))
t_start += 5 * random.weibullvariate(1, 1.5)
crawler = crawl.CrawlingThread(basis)
crawler.start()

View file

@ -58,9 +58,7 @@ class TorInstance():
async def run(self):
""" Runs the Tor Instance on the history.
"""
while (self.history) and (dt.datetime.combine(self.history[0][1],
dt.datetime.min.time()) -
dt.datetime.now()).total_seconds() >= 10:
while (self.history[0][1] - dt.datetime.now()).total_seconds >= 10:
print("Sleeping")
sleep(10)
while self.history:
@ -68,9 +66,8 @@ class TorInstance():
async with async_timeout.timeout(30):
await(self.query(item[0]))
now = dt.datetime.now()
print(self.history[0])
if now <= dt.datetime.combine(self.history[0][1], dt.datetime.min.time()):
sleep((dt.datetime.combine(self.history[0][1], dt.datetime.min.time()) - now).total_seconds())
if now <= self.history[0][1]:
sleep((self.history[0][1] - now).total_seconds())
def create_session(self):