-
Notifications
You must be signed in to change notification settings - Fork 82
How does it work
When you send a request to a HTTP/HTTPS website it goes, as rule, through your ISP (Internet Service Provider), where it is located DPI - Deep Packet Inspection - complex of hardware and software systems that inspects your traffic and trying to find if there is a request to a website that is blocked by the government. If it founds, DPI drops the request and send your packet with redirect to the stub (if it's HTTP, non-HTTPS request) - a ISP webpage notifying that website you're trying to access is blocked.
You're trying to bypass blocking using Proxy or VPN, that locates in a country with no censorship - your traffic directs through that servers. It's not good approach, because, at first and said before, your traffic has to go through third-party servers, and as second, this is not stable approach - this services can start to demanding money or get a block from the government.
PowerTunnel is a solution that need no to direct your traffic through third-party servers, this is how it works:
Starts proxy: PowerTunnel starts a LittleProxy Server on the your PC. Your traffic will be directs through it after setup
Catching your requests: PowerTunnel injects filter into the LittleProxy Server and "looks into" your traffic like DPI, founds requests to the websites blocked by the government or blocked by you.
Sends modified request to the website: If website is marked as blocked by the government, PowerTunnel trying to bypass DPI: if it is a HTTP request, we trying to modify Host
header, changing registry and adding a dot after domain name; or if it is a HTTPS request, we, in simple terms, dividing your packet into numerous chunks. In most cases, at least in Russia, this can fool DPI.
All code related to HTTP bypass located in ProxyFilter, to HTTPS bypass - in LittleProxy modified classes.
Returns you a website response: PowerTunnel returns you a website response. If the response is 302-redirect we're checking if it is ISP stub redirect. If true, we throwing it out and trying to resend request to the website again.