文档章节

ruby实例(不断增加中...)

逸舟
 逸舟
发布于 2011/04/14 09:06
字数 409
阅读 2005
收藏 3

1.抓取百度新歌Top100的歌名及歌手名单

require "open-uri"
require "hpricot"
doc = open("http://list.mp3.baidu.com/list/newhits.html?id=1#top1") { |f| Hpricot(f) }
doc.search(".border").each do |table|
   table.search("a").each do |link|
    print link.inner_html
   end
   puts
end

2.多线程端口扫描器

require 'socket'
include Socket::Constants
ports = (1..1024).to_a
threads = []
time1 = Time.now
for port in ports
    threads << Thread.new(port) do |theport|
        begin
            sock = Socket.new(AF_INET, SOCK_STREAM, 0)
            sockaddr = Socket.pack_sockaddr_in(theport, 'localhost')
            sock.connect(sockaddr)
            puts "Port:#{theport} is Opend! "
            sock.close
        rescue
            #...
        end
    end
end
threads.each {|thr| thr.join}
puts " 共耗时:#{Time.now - time1}秒"
3.查看外网IP地址

require 'socket'
require 'open-uri'
inner_ip = Socket.getaddrinfo(Socket.gethostname, Socket::AF_INET)[0][3]
html = URI.parse("http://www.baidu.com").read
outer_ip = html.scan(/(([0-9]{1,3}.?){4})/).flatten.first
puts "内网IP地址:#{inner_ip}"
puts "外网IP地址:#{outer_ip}"

4.多线程下载

#多线程批量下载http://www.milw0rm.com/上的exploits,自动存放。

require "open-uri"
if $*[0]==nil or $*[1]==nil or $*[2]==nil
abort "用法示例:ruby #$0 开始数 结束数 存放的目录 EX:如ruby #$0 200 300 c:\\1 "
end
time1 = Time.now
threads = []
for i in $*[0]..$*[1]
   exploits= "http://www.milw0rm.com/exploits/"+i.to_s
   threads << Thread.new(i) do |thei|
     begin
     data=open(exploits){|f|f.read}
     open("#{$*[2]}\\#{thei}.htm","wb"){|f|f.write(data)}
     print thei,"-"
     rescue
      #...如果没有这个url,显示404不去管它,让它没有错误回显
    end
end
end
threads.each {|thr| thr.join}
puts " 下载完成,共耗时:#{Time.now - time1}秒"

4.模拟登录页面

#coding: utf-8 #登录出现中文才需要使用
require "win32ole" #包含库
ie = WIN32OLE.new('internetExplorer.Application')
ie.visible = true #这个时候就可以看到一个ie的界面出来了
ie.navigate('http://localhost/login.php') #转到这个页面
sleep(0.1) until ie.busy == false #sleep 直到ie.busy为false 页面完全载入为止
ie.Document.getElementById("username").value = "admin" #输入账户名
ie.Document.getElementById("password").value = "123456" #输入密码
ie.Document.getElementById("submit").click #登录按钮的id是btn1 模拟点击一下

 

© 著作权归作者所有

逸舟
粉丝 12
博文 58
码字总数 15286
作品 0
湛江
技术主管
私信 提问
加载中

评论(1)

linuxqiao
linuxqiao
请教一个问题,我用 gem 去安装的时候不能安装"hpricot",请问是怎么回事?
Web界面开发框架--EdoJS

EdoJS是一个跨浏览器的富客户端界面框架解决方案。它的设计目标是为了让人们用最简单的方式,快速开发出丰富、健壮、高性能的跨浏览器Web应用程序。 EdoJS是使用Javascript开发的,所以它跟服...

匿名
2009/10/26
16.1K
0
你好,我是 PORO

本文翻译自: http://codesthq.com/blog/2015/hi-im-poro.html 译者: 译文: 很高心见到你 很多人学习Ruby是通过学习Rails框架开始的,不幸的是,这可能是学习这门语言最坏的方式。不要误解...

early
2017/11/11
0
0
Ruby之基础介绍(二)

前言 上一篇我们简单介绍了下Ruby,这一节我们开始正式步入Ruby的世界,一探究竟。 Ruby特点 (1)面向对象支持。 (2)动态语言:我们可以修改已经定义过的类,也可以为现有类添加实例方法。...

jeffcky
2016/04/06
0
0
超详细的 Redis Cluster 官方集群搭建指南

今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细。 安装ruby环境 因为官方提供的创建集群的工具是用ruby写的,需要ruby2.2.2+版本支持,ruby安装需要指定opens...

Java技术栈
2018/09/07
0
0
redis-cluster分布式集群安装部署

一.服务器环境 1.1环境说明 此次演示是3台内网机器,开启6个redis单实例。其中每台机器上按照不同的端redis服务端口开启2个redis实例 环境:机器的内网IP地址: 3台服务器事前先关闭iptable...

wjw555
2018/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android Camera模块解析之拍照

最近学习Android的camera模块,本文先介绍一下camera2的api,然后给出android camera拍照的例子,讲解一下camera 拍照的原因知识,与大家共勉。 camera2 介绍 android camera拍照功能介绍 一...

天王盖地虎626
18分钟前
5
0
Excel 曝Power Query安全漏洞

近日,Mimecast 威胁中心的安全研究人员,发现了微软 Excel 电子表格应用程序的一个新漏洞,获致 1.2 亿用户易受网络攻击。其指出,该安全漏洞意味着攻击者可以利用 Excel 的 Power Query 查...

linuxCool
24分钟前
1
0
SpringBoot | 第三十八章:基于RabbitMQ实现消息延迟队列方案

前言 >前段时间在编写通用的消息通知服务时,由于需要实现类似通知失败时,需要延后几分钟再次进行发送,进行多次尝试后,进入定时发送机制。此机制,在原先对接银联支付时,银联的异步通知也...

oKong
24分钟前
6
0
Excel 曝Power Query安全漏洞

近日,Mimecast 威胁中心的安全研究人员,发现了微软 Excel 电子表格应用程序的一个新漏洞,获致 1.2 亿用户易受网络攻击。其指出,该安全漏洞意味着攻击者可以利用 Excel 的 Power Query 查...

linux-tao
41分钟前
1
0
Java - NIO框架

Java NIO提供了与标准IO不同的IO工作方式。 Channels and Buffers(通道和缓冲区) 标准IO基于字节流和字符流,NIO基于通道(Channel)和缓冲区(Buffer)。数据从channel读取到buffer,或从Buffe...

丰田破产标志
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部