匿名IP(月10ドル)でガシガシScraping、Ruby+Nokogiriソース付
あいさつ
匿名IPをローテさせてアクセス制限を気にせずガシガシScrapingする方法を紹介します.
今回はRuby+Nokogiriで済む簡単なモノを紹介しますが、PhantomJSやSeleniumにプロキシをかましても同じような事が出来ます.
- 悪用は良くない
http://proxymesh.com/
http://proxymesh.com/ まずはここで会員登録.
無料版もあるのでそれで済むならそれでいいかも.
ここで登録したusername
①とpassword
②は後で使うので控えておく.
ダッシュボードに表示されているAuthorized済みのProxyのHost③とPort④を控えておく.
NokogiriでGogo
#open
のproxy_http_basic_authentication
オプションを使えばおk
require "open-uri"
class OpenWithProxy
def initialize(proxy_host, proxy_port, username, pass)
@proxy_uri = URI.parse("#{proxy_host}:#{proxy_port}")
@username = username
@pass = pass
end
def open(url)
Kernel.open(url, proxy_http_basic_authentication: [@proxy_uri, @username, @pass])
end
end
owp = OpenWithProxy.new('③で控えたやつ', '④で控えたやつ', '①で控えたやつ', '②で控えたやつ')
# こんな感じ. owp = OpenWithProxy.new('http://us.proxymesh.com', '31280', 'username', 'password')
ちゃんとプロキシを噛んでるか確認
を使うとIPが確認できる.
require 'json'
check_ip = -> { JSON.parse(owp.open('http://api.ipify.org?format=json').read)['ip'] }
check_ip.call
#=> "166.78.113.337"
check_ip.call
#=> "166.28.153.347"
check_ip.call
#=> "192.237.163.323"
...
おお、10個のIPの内から毎回ランダムで選ばれるぽい、いいね
Nokogiriに渡してガシガシ
require 'nokogiri'
doc = Nokogiri::HTML owp.open('https://www.google.com')
doc.title
#=> "Google"
require 'nokogiri'
doc = Nokogiri::HTML owp.open('https://www.google.com')
doc.title
#=> "Google"
いいね!
Author And Source
この問題について(匿名IP(月10ドル)でガシガシScraping、Ruby+Nokogiriソース付), 我々は、より多くの情報をここで見つけました https://qiita.com/gogotanaka/items/ef1b265379293f9f0bd6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .