程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Ruby學習筆記二 使用Ruby實現通過Proxy的方式請求網頁

Ruby學習筆記二 使用Ruby實現通過Proxy的方式請求網頁

編輯:關於JAVA

現在很多網站上某些活動都有限制同一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多時間.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved