1

プログラムを継続的に実行している間、Web サイトにログインしたままにしようとしています。ただし、セッションは最終的にタイムアウトします。

ここに私のテストプログラムがあります:

import urllib
import urllib2
import cookielib
import re

url = 'https://www.locationary.com/'

data = urllib.urlencode({"inUserName":"EMAIL", "inUserPass":"PASSWORD"})
jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders.append(('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1'))
opener.addheaders.append(('Referer', 'http://www.locationary.com/'))
opener.addheaders.append(('Cookie','site_version=REGULAR; JSESSIONID=781FD0C497FB596954BB78B1323215F6'))
request = urllib2.Request("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction", data)
response = opener.open(request)
page = opener.open(url).read()
print re.findall(r'<title>(.*)</title>', page)
h = response.info().headers
print h

出力は次のとおりです。

['Home Page']
['Server: nginx/1.0.8\r\n', 'Date: Fri, 10 Aug 2012 17:07:47 GMT\r\n', 'Content-Type: text/html;charset=UTF-8\r\n', 'Transfer-Encoding: chunked\r\n', 'Connection: close\r\n', 'Set-Cookie: PSESSIONID=533e2fb9fda008d5d16bfbdc9b9a6afed0e5ac54; Path=/\r\n', 'P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"\r\n', 'Set-Cookie: PSESSIONID=533e2fb9fda008d5d16bfbdc9b9a6afed0e5ac54; Path=/\r\n']

私は実験しました...そして、CookieのJSESSIONID部分を取り出した場合、私の出力は、私がログインしていないかのようにWebサイトのホームページになります..したがって、「Locationary.com」と表示されます。ホームページ。」JSESSIONID を入れると、すべてが機能しますが、サーバーは PSESSIONID という Cookie も設定します...これはどういう意味ですか...セッションがタイムアウトしないようにするにはどうすればよいですか? たとえば、30 分ごとに別の JSESSIONID を探す必要がありますか?

4

1 に答える 1

2

Cookie は、セッションのないプロトコル (http など) でセッションの錯覚を作成するために使用されるメカニズムです。あなたはそれについてすべて読むことができます、それをグーグルで検索してください(周りには多くの良い説明があります).

単に適切に動作させたい場合は、set-cookieヘッダーを取得するたびにその値を保持し (古い値を同じ名前で置き換えます)、送信するすべての要求で送信します。堅牢性のために、辞書を使用することをお勧めします。

タイムアウトについては、ウェブサイトに対処させてください。あなたは彼の命令に従うだけです(つまり、Cookieを設定します:)。

于 2012-08-10T18:24:53.560 に答える