快速业务通道

Ruby学习笔记二 使用Ruby实现通过Proxy的方式请求网页 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04

Ruby学习笔记二 使用Ruby实现通过Proxy的方式请求网页

时间:2010-12-17 Anemone

现在很多网站上某些活动都有限制同一IP只能投一票的规定,但是有时候迫于 压迫,又不得不想办法多投几票,以前是采用Apache里的HttpClient来实现这些功 能,日前正在看Ruby,就用它也来玩下:

require ''net/http'' ##获得网页内容 def query_url(url) return Net::HTTP.get(URI.parse(url)); end #抓取cnproxy上所有的代理列表,并将结果保存到proxy.txt中去 #你可以修改这块代码或者其他的代理服务器列表 def find_all_proxy z="3";j="4";r="2";l="9";c="0";x="5";i="7";a="6";p="8";s="1" pf = File.new("proxy.txt","w+") for page_no in 1..10 url = "http://www.cnproxy.com/proxy#{page_no}.html" content = query_url(url) #print content ## ^$?./\[]{}()+* for array in content.scan(/<td>(.*?)<SCRIPT type=text\/javascript>document.write\(":"\+(.*?)\)<\/SCRIPT><\/td>/) if array.length == 2 pf.write("#{array[0]}:#{eval(array[1])}\n") end end end pf.close end ##处理请求 def open_url_with_proxy(url) pf = File.open("proxy.txt","r") d = [] pf.each { |line| d << line } for var in d print "User Proxy #{var}\n" begin proxy = Net::HTTP::Proxy(var.split(":")[0],var.split(":")[1].to_i) print proxy.get(URI.parse(url)); #print proxy.start("www.google.com",80){|http| # response = http.get(''/index.html'') # puts response.body #} rescue ##吃掉异常 end end end ##主程序 begin if !FileTest.exist?( "proxy.txt" ) find_all_proxy end open_url_with_proxy(''http://www.google.com/index.html''); end

这里需要注意的是代理服务器的端口不能是String类型,Ruby竟然不会自动转 换,搞得我浪费了N多时间.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号