电信免费代理服务器ip
简单来说就是其他的服务器代替帮你访问HTTP或者HTTPS,当你的网络受限无法访问某些网站时,但是你的代理服务器可以访问某些网站,这时候你就设置代理,通过代理服务器去访问某些网站。例如:你使用某个ip频繁去爬网站信息时,可能你的ip就会被封,这时候你可能就需要代理去切换ip了。
根据上面的不同,我们只需要将代理的报文转成正常的HTTP报文,在Java中添加下面两个方法替换一下内容。
报文修改后,还得知道这个报文往那个地方发送,可以通Host字段提出域名和端口,代码如下可以拿到Host。
有了Host我可以从里面拿到域名和端口,然后进行Socket连接,然后把修改好的报文写入Socket中。
之后创建一个线程去读Socket返回的数据,也就是百度那边返回的数据,拿到数据后再写回给代理的clientSocket。
这样就完成了一半,比较麻烦的是在每次连接读取的第一个代理报文电信免费代理服务器ip,你得判断结束,GET请求可以通过\r\n\r\n,POST就得通过Content-Length去判断了,总数据长度 =Content-Length+ 数据中的\r\n\r\n位置后。下面代码可能长些,就是判断每次连接的第一个代理报文结束,结束标志要么用Content-Length或者\r\n\r\n,拿到第一个代理报文就可以创建Socket连接,之后的数据写入这个Socket就行了。
上面是简单的测试,还得用浏览器去测试,话说找一个http的网站,也太难,我这里就用python的文件下载管理页面。
我简单画一下大致流程,浏览器通过代理把上面CONNECT报文发送Java应用,Java应用拿到报文,从报文中获取到域名和端口,通过域名和端口连接百度服务器,连接成功后,回应浏览器HTTP/1.1 200 Connection estabished告诉他这边已经连接好了,可以发送数据了,最后浏览器和百度服务器双方交换数据。
逻辑和HTTP一样的,只是他不用把CONNECT报文发送到百度服务器上,就不用修改报文,而且结束只用通过\r\n\r\n判断,和百度服务器连接上就回应HTTP/1.1 200 Connection estabished,简单多了。
以上就是使用Java实现HTTP和HTTPS代理服务详解的详细内容,更多关于Java实现HTTP和HTTPS代理的资料请关注脚本之家其它相关文章!