it-swarm-ja.com

Wget保存Cookieが機能しない

Web APIを介してpyloadにログインしようとしていますが、wgetがCookieを保存しておらず、その理由がわかりません。

次のコマンドを使用しています。

wget --delete-after --keep-session-cookies --save-cookies=my_cookies.txt --post-data="username=USERNAME&password=PASSWORD" http://localhost:8000/api/login

ただし、my_cookies.txtの内容は次のとおりです。

# HTTP cookie file.
# Generated by Wget on 2012-06-23 22:31:33.
# Edit at your own risk.

同じコマンドをデバッグモードで実行すると、ヘッダー応答にsetcookieを含む次の出力が表示されます。

DEBUG output created by Wget 1.10.2 (Red Hat modified) on linux-gnueabi.

--22:31:11--  http://localhost:8000/api/login
Resolving localhost... 127.0.0.1
Caching localhost => 127.0.0.1
Connecting to localhost|127.0.0.1|:8000... connected.
Created socket 3.
Releasing 0x000504d0 (new refcount 1).

---request begin---
POST /api/login HTTP/1.0
User-Agent: Wget/1.10.2 (Red Hat modified)
Accept: */*
Host: localhost:8000
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

---request end---
[POST data: username=USERNAME&password=PASSWORD]
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Content-Length: 34
Content-Type: application/json
Cache-Control: no-cache, must-revalidate
Set-cookie:  beaker.session.id=405390ddc809efed54820638c95d7997; expires=Tue, 19-Jan-2038 04:14:07 GMT; Path=/
Connection: Keep-Alive
Date: Sat, 23 Jun 2012 21:31:11 GMT
Server: CherryPy/3.1.2 WSGI Server

---response end---
200 OK
hs->local_file is: login (not existing)
Registered socket 3 for persistent reuse.
TEXTHTML is on.
Length: 34 [application/json]
Saving to: `login'

100%[=======================================>] 34          --.-K/s   in 0s

22:31:11 (1.28 MB/s) - `login' saved [34/34]

Removing file due to --delete-after in main():
Removing login.
Saving cookies to my_cookies.txt.
Done saving cookies.

誰かが私が間違っていることを教えてもらえますか?

7
TrymBeast

まだバージョン1.10.2を使用していることを考えると、2009年8月のバージョン1.12で修正されたバグが発生している可能性があります。特に最新バージョンは2011年9月近くにリリースされた1.13.4であるため、アップグレードを検討する必要があります。

とにかく...問題のバグは次のとおりです: bugGNU Wget-バグ:バグ#26775、200以外の応答からCookieを保存 これには、200以外の戻りエラーを受け取ったときにwgetがCookieを保存しないことが含まれますコード。

デバッグ以外のリクエストがキャッシュされているか、302リダイレクトが含まれている可能性があります。これらすべてにより、リクエストは200以外のリターンコードを返します。デバッグ出力に200-OKコードが表示されます...「通常の」要求を実行するときとまったく同じコマンドラインを使用してデバッグ要求を実行しましたか?

2
lornix

使用する --keep-session-cookiesセッションCookieはデフォルトでは保存されないため

9
user196366