Dust Of Dream

          知識(shí)真的是一個(gè)圓么?

          Ruby學(xué)習(xí)筆記二:使用Ruby實(shí)現(xiàn)通過(guò)Proxy的方式請(qǐng)求網(wǎng)頁(yè)

          現(xiàn)在很多網(wǎng)站上某些活動(dòng)都有限制同一IP只能投一票的規(guī)定,但是有時(shí)候迫于壓迫,又不得不想辦法多投幾票,以前是采用Apache里的HttpClient來(lái)實(shí)現(xiàn)這些功能,日前正在看Ruby,就用它也來(lái)玩下:
          require 'net/http'
          ##獲得網(wǎng)頁(yè)內(nèi)容
          def query_url(url)
          return Net::HTTP.get(URI.parse(url));
          end

          #抓取cnproxy上所有的代理列表,并將結(jié)果保存到proxy.txt中去
          #你可以修改這塊代碼或者其他的代理服務(wù)器列表

          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

          ##處理請(qǐng)求
          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
          這里需要注意的是代理服務(wù)器的端口不能是String類型,Ruby竟然不會(huì)自動(dòng)轉(zhuǎn)換,搞得我浪費(fèi)了N多時(shí)間.

          posted on 2008-10-17 17:27 Anemone 閱讀(1371) 評(píng)論(1)  編輯  收藏 所屬分類: RUBY學(xué)習(xí)

          Feedback

          # re: Ruby學(xué)習(xí)筆記二:使用Ruby實(shí)現(xiàn)通過(guò)Proxy的方式請(qǐng)求網(wǎng)頁(yè) 2008-10-18 01:09 愛(ài)吃魚(yú)頭

          學(xué)習(xí), 原來(lái)用java玩過(guò)這個(gè),沒(méi)想到用ruby寫(xiě)這么簡(jiǎn)潔~~
            回復(fù)  更多評(píng)論   


          My Links

          Blog Stats

          News

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          新聞檔案

          相冊(cè)

          常去網(wǎng)站

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 会昌县| 东兰县| 西乡县| 九江市| 洛浦县| 合川市| 大田县| 九龙城区| 晋江市| 东安县| 新津县| 泸溪县| 吴旗县| 赫章县| 定边县| 札达县| 新竹县| 越西县| 临高县| 宿迁市| 额尔古纳市| 普陀区| 图们市| 区。| 阳西县| 辽阳市| 马关县| 勃利县| 凌云县| 平泉县| 上蔡县| 峨边| 海门市| 孝昌县| 高邑县| 扎兰屯市| 淅川县| 通城县| 浏阳市| 荆门市| 广东省|