从一个简单的代理服务器开始(1)

代理里边用的一些基本模块不一一介绍了。

我们先从代理服务器谈起吧。

很多公司都严格控制上网。所有的网页浏览都要从一个指定的代理服务器入口。

什么是代理服务器?当你使用代理服务器时,发生了什么事情。公司为什么能从代理服务器上监控员工的上网行为?

让我们一步一步的来揭开这个秘密,并且手把手的教你如何编写这么一个简单的web代理。

单位的电脑,通常给你的IP是一个私有的IP地址,比如192.168.1.16。这个IP地址出去的所有数据包要经过一个网关,比如192.168.1.1才能送到Internet上去。那为啥我们还需要代理服务器呢?这就是很多公司毒辣的地方了。公司里边所有电脑,除了代理服务器都不能上网。怎么做到的?很简单,在网关处加一条规则就是了。具体怎么弄的,大伙也不需要知道,反正办法多的是。言归正传,回到代理上来。浏览器给代理发送的是什么东东?让我们来观察下,不需要抓包,上NC吧。

让我们用NC启动一个tcp server作为假的代理服务器,来观测一下从用户浏览器到代理服务器之间的http数据包传输。

#nc -l 8080

在另外的窗口,我们用curl来通过代理服务器访问一个url

#curl -x localhost:8080 'http://baidu.com/'

GET http://baidu.com/ HTTP/1.1
User-Agent: curl/7.32.0
Host: baidu.com
Accept: */*
Proxy-Connection: Keep-Alive


跟不用代理比,有几个地方的差别:

1:GET后面跟的不是一个相对路径,而是一个绝对路径。

2:用头Proxy-Connection来替代原来的Connection。

简化起见,我们先不考虑Proxy-Connection吧。我们的程序会根据URI是否是一个绝对路径来区分发送到代理服务器上的请求是否是代理请求吧。

假定代理服务器已经拿到了这个完成的URI,我们还是采用Perl脚本,要如何才能完成这个HTTP请求呢?很多人会想到LWP。我们第一个代理版本就用LWP吧。(待续)

转载于:https://my.oschina.net/pikeman/blog/194918

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值