I am a developer from Turkey, currently residing abroad for studying CompSci. Throughout the years I watched the Internet censorship in my country getting worse and worse each and every day under the Islamist regime of Erdoğan, to the extent that of Wikipedia getting blocked.
As they improved their methods of censoring (and worsening the life of their citizens), such as from DNS blocking to blocking VPNs today, I was afraid that there any direct solution can (and will) one day get blocked (for instance, Tor website is currently blocked in Turkey but it works if you manage to install it somehow, whereas you'll need a bridge to connect to the Tor network in Iran if memory serves me well).
I came up with the idea (though not sure of its uniqueness) to use channels of everyday communication (such as e-mail, Telegram, (Facebook) Messenger...) to circumvent censorship. Because "even under the most repressive regimes, people do need to communicate with others, both within and outside of the country."
I'd love to hear your feedback!
I like the idea a lot though! Very interesting.
I think it's better to speak up and to face the consequences than to see (first) your country (and then the world) ruined. I am currently studying abroad in UK and even though they cannot directly harm me (though they can hurt me through my family and beloved ones living back home).
I kept thinking about the idea of settling in a nicer country, but then, I realise that people (in the West) have paid the price of their freedom (if not their wealth), and then idea of "(e|im)migrating" doesn't feel like a solution any more but postponement of the problem, whose responsibility is on my (our) shoulders and no one else's.
More than what you asked for I assume, sorry. =)
I do not tolerate:
- Exploitation of _children_ (including child pornography)
- _Religious_ terrorism
Bypassing censorship is a criminal activity in a number of countries. Pick censorship or pick an internet with illegal content. You can't have a world with neither.
Also, when you say "exploitation of anyone" or "any terrorists", I think it becomes far too broad, especially terrorism: Osama Bin Laden, a fallen idol, was once an "Anti-Soviet warrior (who) puts his army on the road to peace".
Not that I support any terrorist activity, but I wouldn't like to snitch on people based on whims of statesmen.
: Unless they use rubber hose.
In addition to censorship-circumvention, it also provides a way to read the content of potentially-malicious sites without risk of browser vulnerabilities being exploited, and without revealing your IP address, User-Agent, etc.
Now we can all browse the web like we're Richard Stallman :)
> try downloading it, if it is a file smaller than 5 MiB;
I found that even pages smaller than 5MB get rendered to PDF.
(Update: UA is "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/67.0.337")
It doesn't seem to support chunked transfer-encoding:
> Your request [...] has been unsuccessful due to following error:
> file size unknown: "content-length" header is missing
PDFs have the same kind of vulnerabilities, they can even execute JS (JS is probably not contained in the ones generated by the author).
>and without revealing your IP address, User-Agent, etc.
>> try downloading it, if it is a file smaller than 5 MiB;
>I found that even pages smaller than 5MB get rendered to PDF.
I believe the text is supposed to mean "if it's not a web page but a file [offered for download], it will download the file if it's less than 5MB".
Yes, with pyppeteer (Python 3 port of puppeteer).
> I found that even pages smaller than 5MB get rendered to PDF.
Web-pages (URLs that contain no file-extensions, or certain ones such as ".php", ".aspx" etc.) are rendered into PDFs. Generated PDFs must also be less than 5 MiB.
> It doesn't seem to support chunked transfer-encoding:
True. I need to determine the size of a file before downloading it completely, and I used "content-length" header for that. I can see how it should also be possible for chunked transfer-encoding, but I'm not willing to implement it myself to be honest, and I doubt if it's supported by requests library.
Thanks for the feedback!
: An arbitrary limit. Might change it in the future.
Maybe `stream=True` and `.read(5 * 1024 * 1024)` and check EOF, if not, abort.
Maybe combined with a form of stenography, this could be more useful.
Quick note, /ar/ and /zh/ don’t currently seem to work.
To use an example from American history, the American revolutionaries (AKA “patriots”) were almost certainly seen as terrorists from the perspective of Great Britain and its loyal subjects.