- listen requests from browser
- encrypt the data
- forward data to the server
- receive the data from server
- decrypt the data and then send to browser
- listen requests from client
- decrypt the data with socks5 protocol
- get the content from web server
- encrypt the data
- forward data to the client