Wget を使用してプライベートGitHubページをダウンロードしようとしていますが、ログイン画面を通過できません。
ログインページのPOSTデータを使用してlogin/password
を送信し、認証されたユーザーとして実際のページをダウンロードするにはどうすればよいですか?
これが私が出力で実行しようとしているコマンドです:
wget --save-cookies cookies.txt \
--post-data 'login=myUserName&password=myPassword' \
https://github.com/login
Wget出力:
Resolving github.com... 207.97.227.239
Connecting to github.com|207.97.227.239|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2012-11-23 19:58:13 ERROR 403: Forbidden.
私も次のコマンドを試しました:
wget --save-cookies cookies.txt \
--post-data 'authenticity_token=sPV07gM2/OHYDAT99WmawItd8R7hiTaJnBAs/b3zN9Y=&login=myUserName&password=myPassword' \
https://github.com/login
ログインページhttps://github.com/login
のフォームHTMLコードは次のとおりです。
<form accept-charset="UTF-8" action="/session" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="sPV07gM2/OHYDAT99WmawItd8R7hiTaJnBAs/b3zN9Y=" /></div>
<h1>Sign in <a href="https://github.com/plans">(Pricing and Signup)</a> </h1>
<div class="formbody">
<label for="login_field">
Username or Email<br />
<input autocapitalize="off" autofocus="autofocus" class="text" id="login_field" name="login" style="width: 21em;" tabindex="1" type="text" />
</label>
<label for="password">
Password <a href="/sessions/forgot_password">(forgot password)</a>
<br />
<input autocomplete="disabled" class="text" id="password" name="password" style="width: 21em;" tabindex="2" type="password" />
</label>
<label class='submit_btn'>
<input name="commit" tabindex="3" type="submit" value="Sign in" />
</label>
</div>
</form>
あなたはあなたのブラウザがすることをしないことによっていくつかの間違いを犯しています:
https://github.com/session
に送信する必要があります。authenticity_token
を含む、すべてのフォームパラメータを指定する必要があります。/login
で設定されたセッションCookieを提供する必要があります。私が期待していた必要のない唯一のことは、リファラーを設定することです。
するべきこと:
$ wget --keep-session-cookies --save-cookies cookies.txt -O login.rsp https://github.com/login
$ grep authenticity_token login.rsp
これにより、ログインページが要求され、セッションが保存され、 [〜#〜] csrf [〜#〜] トークンの非表示フォーム値(および周囲のHTML)が出力されます。
percent-encoding すべてのパラメーター、特に句読点を含むことが多い非表示フォームパラメーターauthenticity_token
の値の後にログインします。
$ wget --load-cookies cookies.txt --keep-session-cookies --save-cookies cookies.txt --post-data='login=USERNAME&password=PASSWORD&authenticity_token=TOKEN_VALUE_PRINTED_BY_GREP_THEN_PERCENT_ENCODED' https://github.com/session
ブラウザにログインするときと同じように、少しバウンドしてhttps://github.com
になります。