1. text

    Fastladderの(認証)プロキシ対応

    Fastladderのプロキシ対応と、認証プロキシ対応にチャレンジ中。Feedの追加周りはどうにかなったっぽい。

    まずruby\1.8内にあるopen-uri.rb。これは元々、環境変数を見て、HTTP_PROXYとかCGI_HTTP_PROXYとかが設定されていればプロキシを使ってくれる。ここでは、プロキシ認証用にユーザとパスワードも渡すように変更。

           if proxy
    - klass = Net::HTTP::Proxy(proxy.host, proxy.port)
    + klass = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password)
    end

    次にgems内にあるrfeedfinder.rbの268行目から。こちらはプロキシ対応がまったくないので、open-uriにあわせて環境変数方式でプロキシが選択されるようにする。

             Timeout::timeout(20) {
    -          html = Net::HTTP.get(URI.parse(link))
    +          html = nil
    +          proxy = URI::HTTP::find_proxy
    +          if proxy
    +            html = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password).get(URI.parse(link))
    +          else
    +            html = Net::HTTP.get(URI.parse(link))
    +          end
               data = Hpricot(html, :xml => true) if html.to_s !~ /404 Not Found/ 

    これで、フィード追加時のバックエンドプロセスが、一通り以下のような環境変数を反映して動作してくれた。

    HTTP_PROXY=http://joe:opensesami@proxy.example.com:8080

    余談だけど、僕はFastladderのWindows版で遊んでいて、修正はすぐに反映されなかった。

    ちょっと悩んだのだけど、Windows版はFastladderのWebサーバプロセスが自動的にサービスに追加されるようになっていて、サービスの再起動が必要だったみたい。[コントロールパネル]-[管理ツール]-[サービス]で「Fastladder」というサービスを再起動する。

    あとはクローラ側を直せば、すべてOKなのかな?クローラ内で「URI::HTTP::find_proxy」したらエラーになったみたいで、よく分からないんだよな。まあボチボチやろう。

  2. 4年前 リアクション(0)

About

Makio Tsukamoto tumblelogging in the mood of sinkin' in the rain.

Search

Ads by Amazon

Tags

People I follow