`
windonly
  • 浏览: 16462 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
现在很多网站上某些活动都有限制同一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多时间.
分享到:
评论

相关推荐

    java 实现HTTP PROXY

    Java实现HTTP PROXY是一个常见的需求,特别是在开发网络应用或者测试环境中,我们可能需要通过代理服务器转发HTTP请求。本文将深入探讨如何使用Java编程语言来创建一个HTTP代理服务器,并且会涉及相关的源码分析。 ...

    PureJS (6.3):Rhino 中的日志与 proxy 对象

    二、Proxy对象 1. 概念:Proxy是ES6引入的一种新类型,它能拦截并定制对象的访问行为。在Rhino中,虽然没有原生支持Proxy,但可以通过一些技巧来模拟类似的功能。 2. 代理模式:在JavaScript中,我们可以使用函数...

    使用mysql-proxy实现mysql读写分离

    #### 一、读写分离的常见实现方式 根据不同的场景需求,读写分离可以采用多种方式来实现,其中最常见的有两大类: 1. **基于程序代码内部实现**:这种方法是在应用程序的代码层面来判断SQL语句的类型(读还是写)...

    apache Proxy_Error

    apache Proxy Error apache Proxy Error apache Proxy Error apache Proxy Error

    某网络课程讲解proxy,实现多次后端请求

    在IT行业中,Proxy(代理)是一种非常重要的技术,特别是在网络通信和前端开发中。本网络课程专注于讲解如何利用...通过学习Promise、Proxy和服务器端脚本的结合使用,你可以掌握构建高效、可扩展的Web应用的关键技能。

    HttpProxy请求工具

    使用HttpProxy请求工具,开发者和测试人员可以有效地进行API测试、网页抓取、网络调试、性能评估等工作,提升开发效率并确保应用程序的网络通信功能正常运行。在实际应用中,理解并熟练使用这类工具对于IT从业者来说...

    nginx学习笔记.zip

    1. **反向代理配置**:通过在server块中配置proxy_pass指令,指定后端服务器地址,实现请求转发。 2. **负载均衡**:配合upstream模块,通过轮询、权重、最少连接等方式分配请求到不同后端服务器。 3. **健康检查**...

    iOS安全之【拦截请求,实现特定目的 】(修改HTTPHeaderField、不走全局proxy、设置代理IP和端口、对网络请求的数据进行报文级别的加密)

    2、应用场景: 2.1、 自定义请求头的HTTPHeaderField 2.2、针对...通过[NSURLProtocol registerClass: [NetworkInject class]];注入了自定义的NSURLProtocol类 3、原理:利用NSURLProtocol 拦截 HTTP 请求

    Node.js-http-proxy-middleware用于把请求代理转发到其他服务器的中间件

    总之,`http-proxy-middleware` 是 Node.js 开发中的强大工具,通过它,你可以轻松地管理和控制应用的网络请求,实现灵活的数据转发,提高开发效率,同时保持代码的简洁和清晰。在实际项目中,正确使用这个中间件...

    Paros+proxy:网页程序漏洞评估代理

    总的来说,Paros Proxy是Web应用安全领域的一个强大工具,通过其代理功能和丰富的分析工具,它可以帮助用户深入理解应用程序的安全状况,及时发现并修复潜在的漏洞,从而提升整体的安全性。对于任何涉及Web应用开发...

    rack-reverse-proxy, rack的反向代理.zip

    总结来说,Rack的反向代理库rack-reverse-proxy提供了一种强大且灵活的方式来管理Web应用的流量,通过反向代理实现各种复杂的网络架构需求。其开源特性使得开发者能够充分利用社区的力量,不断提升和完善这个工具。...

    goproxy-android snail007/goproxy全能代理服务器安卓版

    1. Go语言与GoProxy:GoProxy基于Go语言构建,Go语言以其高效的性能和强大的网络处理能力,使得GoProxy能胜任高并发的代理服务需求。GoProxy提供了丰富的API和配置选项,以满足各种复杂的代理场景。 2. 代理服务器...

    charles-proxy 抓包工具 v4.2 Win + Mac + Linux全平台破解文件

    使用方法: gitoschina码云源码: http://git.oschina.net/iYoungDone/charlesloader Windows 平台,将下载的charles.jar文件覆盖到安装目录下的lib文件夹下即可完成破解! Mac 平台,将下载的charles.jar文件右键 ...

    python 开发的mysql proxy : angel proxy

    标题中的“Python开发的MySQL Proxy:Angel Proxy”指的是一个用Python编程语言编写的数据库中间件,它的主要功能是实现MySQL数据库的读写分离。在大型系统中,为了提高数据库的性能和可扩展性,通常会采用读写分离...

    解决vue中使用proxy配置不同端口和ip接口问题

    通过配置代理,开发者可以在开发阶段模拟出接近线上环境的请求方式,从而更好地测试和调试前端应用。同时,通过将接口信息动态化配置,可以有效地解决不同环境下的接口变更问题,避免了频繁打包上线的繁琐过程。 ...

    ajaxProxy:ajaxProxy 是一个ajax请求发送代理,支持链序请求和阻塞请求

    ajaxProxy提供了blockReq函数实现对已丢弃请求的阻塞,且支持多条队列,只有同一队列中的请求才会互相阻塞,所以我们可以在页面的不同区域使用不同的队列,不同区域的请求互不干扰,统一区域的请求互相阻塞。...

    易语言伪造请求ip 伪造请求ip 网页访问伪造ip

    易语言伪造网页访问ip地址 结合HTTP扩展请求头 X-Forwarded-For 可以对客户端IP进行伪造 X-Forwarded-For 是一个 HTTP 扩展头部,用来表示HTTP请求端真实 IP,HTTP/1.1 协议并没有对它的定义,但现如今X-Forwarded-...

    Laravel开发-api-proxy-laravel

    `ApiProxy::route()` 方法的第二个参数是目标 API 的基础 URL。 此外,`thinkingmik/api-proxy-laravel` 还支持自定义中间件,这使得在请求转发前或转发后执行额外的操作成为可能。例如,添加认证令牌、修改请求头...

    解决代理转发post请求失败

    解决代理转发post请求失败

Global site tag (gtag.js) - Google Analytics