当前位置: 首页 > Web前端 > HTML

ChetuCub的自我修养-[HTTP]HttpProxy解析

时间:2023-04-02 16:35:13 HTML

前言是一个中介Web代理(proxy)服务器,是网络的中间实体。代理位于Web客户端和Web服务器之间,充当“中间人”。HTTP代理服务器既是Web服务器又是Web客户端。Proxy代理软件mac常用的代理软件是Charlesproxy软件,只能映射你浏览器请求的主机。P.s:如果要更改本机所有http协议请求的host,请更改本机的host文件。mac的host文件位置是/private/etc/Howtoproxyyourpcaddressx.x.x.x,本机运行的项目地址是x.x.x.x:80/demo.html,如果本地开启了代理服务器,则代理服务器地址是x.x.x.x:8888(如果你使用Charles)。所有来自你电脑浏览器的http请求都会被转发到代理服务器x.x.x.x:8888,再由代理服务器转发到目标x.x.x.x:8888地址。开启proxy代理后,使用浏览器访问www.baidu.com,请求会先转发到x.x.x.x:8888,然后x.x.x.x:8888再转发请求到www.baidu.com,将域名映射到开发过程中,我们经常需要将本地网站demo的域名改为在线地址,以满足某些开发需求(比如开发活动项目时,如果要调用微信的jssdk,网站必须是域名9game.cn的名称),比如PC端想使用域名goldpage.9game.cn:80/demo访问本地项目localhost:5000/demo。这时候需要做一个域名映射,即在本地开启代理服务器,在代理服务器中配置goldpage.9game.cn:80映射到localhost:5000。这样,你在浏览器中输入goldpage.9game.cn:80后,请求就会被转发到代理服务器x.x.x.x:8888,然后代理服务器将这个请求转发到你的localhost:5000去请求调试。移动终端没有控制台。无论请求是否发送,都没有地方显示和调试哪里出了问题。现在场景如下:你有一部手机(ip:y.y.y.y)和一台pc(ip:x.x.x.x),你在PC上开发了一个页面y.y.y.y:80/demo.html,点击上面的按钮,就可以发送了在后台向地址z.z.z.z:5000/restful发出ajaxpost请求。现在你用手机调试这个页面,你点击按钮,POST请求根本没有响应,不知道是事件兼容问题还是网络问题导致ajax请求发不出去。这时候就需要做代理调试了。首先在你的pc上打开一个proxy代理x.x.x.x,监听8888端口,然后连接你的手机你手机的http代理设置是x.x.x.x:8888。这样你手机发送的所有http请求都会被转发到你pc的代理服务器x.x.x.x:8888。这样设置后,请求会从手机->电脑(代理)->服务器,不仅不会对页面交互有任何影响,而且通过查看可以看到所有经过代理服务器的ajax请求代理服务器的日志!使用这种方法抓包,效果超棒(本例中,你访问x.x.x.x:80/demo.html,点击按钮向z.z.z.z:5000/restful发送请求。这个过程实际上发送了两个请求,一个是一个GET请求到x.x.x.x:80获取demo.html,一个GET请求到z.z.z.z:5000restFul接口发送POST请求,如果代理服务器没有做任何设置,默认转发原地址即x.x.x.x:80转发到x.x.x.x:80,z.z.z.z.:5000转发到z.z.z.z:5000(当然你也可以转发x.x.x.x:80转发到baidu.com,但是这样你请求的是baidu.com/demo.html))结语HttpProxy还有很多其他有趣的技巧可以进一步挖掘,有空会继续补充