Before we get started, let's understand the meaning
HTTP header data payload that will be injected
Remote HTTP proxy (ex: Squid proxy/APN proxy)
Show your data that you send/received in app log (Please turn off during normal usage)
Disable Wakelock that prevent your CPU from sleeping
Use Google DNS to bypass blocked websites and prevent your ISP from knowing what websites you're visiting.
Start SSH connection upon starting injection.
There's two modes, iptables (root) which will require root and it only tunnel port 80 and 443 traffic.
VPN Service mode is for Android 4.0+ and will tunnel all traffic to your server. (Please use root mode, if you are having issue with VPN Service mode)
Secure Shell is a encrypted network protocol for initiating text-based shell sessions on remote machines in a secure way.
The port for your SSH server, normally will be port 22 (Normally public squid/http proxy will block port 22)
Compress data packet using zlib.
HTTP Injector currently is using port 8989 (fixed), you have to enable and set 127.0.0.1:8989 for the SSH to connect to HTTP Injector local proxy server.
Using the below keyword, the app will automatically replace with relavent data upon injection, you don't need to replace the word inside the square bracket unless you know what you are doing.
Assume that 18.104.22.168 is your SSH Server IP and 22 is your SSH port
Destination host and port, seperated by colon :
SSH server ip and port that you set at settings
HTTP\1.0 or HTTP\1.1
HTTP protocol version
CONNECT [host_port] [protocol]
Short form of three keywords
Carriage Return, U+000D
Line Feed, U+000A
CR (U+000D) followed by LF (U+000A)
LF (U+000A) followed by CR (U+000D)
To indicate the end of HTTP header
Notice: In this example we are using "CONNECT" & "HEAD" request method and domain.com as the host you want to spoof, you might need to use GET/POST/DELETE/CONNECT/HEAD...
Make sure your remote HTTP proxy allow the request method else you will get 403 error.
Tips: Use "Payload Generator" inside HTTP Injector app instead of writing manually. Normally we just need to use "CONNECT" request method
302 Error code - If you are getting 302 HTTP header code that means your ISP is redirecting your request to their captive portal page. Normally ISP blacklisted your remote proxy or the HTTP Payload
400 Error code - This indicate that your payload is invalid and can't be understand by remote proxy
Connection timeout - It could be that your network connection is slow or the remote proxy is slow
Psiphon - To use with psiphon (uncheck Start SSH), you can't use [host_port] in your payload, you need to get the SSH IP of psipon and hardcode it (not tested)
OpenVPN - Disable "Start SSH" and use HTTP Injector with your OpenVPN if you don't have SSH server.
You have to add http-proxy 127.0.0.1 8989 and bypass route route replace_to_your_remote_proxy_ip 255.255.255.255 net_gateway (change "replace_to_your_remote_proxy_ip" to IP) to your VPN config.