
上QQ阅读APP看书,第一时间看更新
Case 2 – with a proxy
When we make the request with a proxy, the browser only connects to the proxy and not the actual website. So, the difference in the commands is as follows:
telnet <Proxy IP> <Proxy Port>
GET http://www.google.com/ HTTP/1.1
Host: www.google.com
Connection: Close
As we can see, instead of sending only the / as a parameter to the GET, we send the full URL, so that the proxy server can make the request on our behalf.
This will work for HTTP (unencrypted), however for HTTPS the telnet utility shouldn't be used for testing, the openssl command should be used.
A sample of the HTTPS connection is shown as follows (provided openssl is installed on your terminal).
We will use the s_client or the secure client in the OpenSSL library. The command is shown as follows (used instead of telnet <ip> <port> shown in the preceding example):
openssl s_client -connect www.google.com:443.
A sample of the HTTPS connection is shown as follows (provided openssl is installed on your terminal).
We will use the s_client or the secure client in the OpenSSL library. The command is shown as follows (used instead of telnet <ip> <port> shown in the preceding example):
openssl s_client -connect www.google.com:443.
This will then establish a secure channel to the server (by agreeing on the cipher, verifying the certificate, and changing the cipher spec). Once it is done, you can continue to use the HTTP commands as before (GET, Host, Connection, and so on).