1

ユーザーが既にサイトにサインインしている場合、認証を必要とせずにサイトからファイルをダウンロードする方法は? Cookie を渡す必要がありますか。どうやってするか?私はfirefoxブラウザを使用しています。正確なシナリオは次のとおりです。認証が必要なサイトがあります。ユーザーがブラウザーを介してサイトにログインした後、コードが flashgot アドオンによって提供される Cookie 文字列からその Cookie を取得し、認証が不要になるように、その Cookie を使用してポータルに get 要求を送信する必要があります。私はこれを試しました: 私は文字列を介してクッキーを渡しています,

  cookie=rPopHome=1; FF_JoinPromo=true; __utma=140252452.845088738.1348089486.1348089486.1348089486.1; __utmb=140252452.6.10.1348089486; __utmc=140252452; __utmz=140252452.1348089486.1.1.utmcsr=adf.ly|utmccn=(referral)|utmcmd=referral|utmcct=/7hYuB; ff_membership=SlyL0JODTZMIdfYHy/7imBJHqyHhO9ZHNE4bwnFPzoGYgPVEEneUMsfqaFDsqR+w9EotIx9i7PPL7ZIp1CiUSOtx0Y4mE1GmxayYmnJVD/z5aCTS2qT7fTItiqOprW8rlsEYw2Br7OoETaF3L1RGRQai1zlFQw6QO9qBEPKXC7rOx5LuEEKYlrZFKvuD/m7uDc6SWDJyaW67sRfo/bpb/Q==; ff_referrer_hash=o7e2qf0;

request.setUrl(url);
request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true);
cookieJar->setCookiesFromUrl(QNetworkCookie::parseCookies(cookie),url.host());
manager.setCookieJar(cookieJar);
reply=manager.get(request);

しかし、次のエラーが表示されます。ダウンロードしたファイルには次のメッセージが含まれています。

<h1>HTTP/1.0 401 Unauthorized</h1>
     <p>You have attempted to download via a Premium download link, but we could not verify your Premium account details.</p>
     <p></h1>

ユーザーエージェントも変更しましたが、それでも失敗しました:

request.setRawHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1");
4

1 に答える 1

0

QWebViewを UI に埋め込むと、ユーザーがこのブラウザーを介してログインすると、ページが要求を送信するように構成されているQNetworkAccessManagerにアクセスできます。

QNetworkAccessManager* getNetMan(const QWebView* view)
{ return view->page()->networkAccessManager(); }

これには Cookie jar が正しく設定されている必要があります。この種のシステムがリクエストを完全にスプーフィングするために機能するには、HTTPリファラーヘッダーも設定する必要がある場合があります。

これが機能しない場合は、Wiresharkを使用してブラウザーとアプリケーションからの要求を比較し、要求が一致するまでプログラムを調整します。

于 2012-09-20T18:22:06.093 に答える