スクレイピングに便利なMechanize
だけどアクセスしまくるとBANされてしまうのでプロキシを使うことで回避しようという話
環境
- ruby 2.3
- Mechanize
- プロキシサーバー2台以上
- 同じポートでアクセスできるようにしてあると便利である
やりかた
モンキーパッチ?はやり方がよくわからないので、Mechanizeクラスを継承して新しくオレオレクラスを作成する
class MechanizeHelper < Mechanize def get(uri, parameters = [], referer = nil, headers = {}) proxies = ['8.8.8.8', '8.8.4.4'] self.set_proxy(proxies.sample, 8888) self.max_history = 1 self.keep_alive = false self.read_timeout = 60 super end end
これでつかうときにMechanizeHelperをイニシャライズする
agent = MechanizeHelper.new agent.get('https://www.yahoo.co.jp/')
これで診断くんとか見るとたしかにIPがランダムに変わっている