HTTP 基本認証は、HTTP ヘッダーを介して機能します。制限されたリソースにアクセスするクライアントは、次のような認証ヘッダーを提供する必要があります。
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Base64 でエンコードされた名前とパスワードが含まれています。詳細については、ウィキペディアの記事: Basic Access Authenticationを参照してください。
私は少しグーグルで検索しましたが、アネモネにカスタムリクエストヘッダーを受け入れさせる方法が見つかりませんでした. たぶん、あなたはもっと幸運になるでしょう。
しかし、それができると主張する別のクローラーを見つけました: Messie . 試してみるといいかもしれません
アップデート
Anemone がリクエスト ヘッダーを設定する場所は、Anemone::HTTPです。確かに、そこにはカスタマイズはありません。モンキーパッチできます。このようなものが動作するはずです (これをアプリのどこかに置いてください):
module Anemone
class HTTP
def get_response(url, referer = nil)
full_path = url.query.nil? ? url.path : "#{url.path}?#{url.query}"
opts = {}
opts['User-Agent'] = user_agent if user_agent
opts['Referer'] = referer.to_s if referer
opts['Cookie'] = @cookie_store.to_s unless @cookie_store.empty? || (!accept_cookies? && @opts[:cookies].nil?)
retries = 0
begin
start = Time.now()
# format request
req = Net::HTTP::Get.new(full_path, opts)
response = connection(url).request(req)
finish = Time.now()
# HTTP Basic authentication
req.basic_auth 'your username', 'your password' # <<== tweak here
response_time = ((finish - start) * 1000).round
@cookie_store.merge!(response['Set-Cookie']) if accept_cookies?
return response, response_time
rescue Timeout::Error, Net::HTTPBadResponse, EOFError => e
puts e.inspect if verbose?
refresh_connection(url)
retries += 1
retry unless retries > 3
end
end
end
end
明らかに、メソッド呼び出しのusername
およびpassword
params に独自の値を指定する必要があります。basic_auth
はい、それは迅速で汚いハードコードです。しかし、物事を適切に行う時間がない場合もあります。:)