使用ruby语言,模拟代理发 [http请求<]
代码如下:
require 'net/http'
[wap.uni-info.com.cn] proxy_addr = '10.0.0.200'
proxy_port = 80
Net: [HTTP::Proxy(proxy_addr,] proxy_port).start('wap.uni-info.com.cn') { [http|] resp, data = [http.get("] nil)
File.open("d:/uni.log", "wb") do |f|
f.syswrite(resp.body)
end
}
下面稍微解释一下:
Net: [HTTP::Proxy(proxy_addr,] proxy_port).start('wap.uni-info.com.cn')
这句就是用ruby的Proxy类向某个地址发送请求,这里是始终通过10.0.0.200:80地址发送每一个请求
resp, data = [http.get("] nil)
这个不用多说了,就是发送请求,并且得到response
File.open("d:/uni.log", "wb") do |f|
f.syswrite(resp.body)
end
这段语句就是把得到的response的内容用二进制形式存放文件(由于是wap页面,wap网关会把wml页面编译成二进制的wmlc文件,所 [http得到的response也是二进制流,当然写文件也要用二进制形式了)<]
由于我要访问的是联通的Portal wap页面,此页面普 [HTTP请求是访问不了的,必须通过无线上网,然后使用代理才能访问到.以前的方法是用java语言来实现,通过apache的httpclient组件来完成的,代码量又大,又要加很多jar包,哪有象ruby不到10代码就可以搞定,由此可见ruby语言的灵活性,简洁性.<]