2

cookiejar でログインし、ログインページではなく、認証後にのみ表示されるページを起動したい。私は機械化がそれを行うことを知っていますが、今私のために働いていないことに加えて、私はむしろそれなしでこれを行います. 今私が持っています、

import urllib, urllib2, cookielib, webbrowser
from cookielib import CookieJar

username = 'my_username'
password = 'my_password'
url = 'my_login_page'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'my_username' : username, 'my_password' : password})
opener.open(url, login_data)
page_to_launch = 'my_authenticated_url'
webbrowser.open(page_to_launch, new=1, autoraise=1)

ログインして認証済みページを stdout にダンプするか、Cookie を認識せずにログイン ページを起動できますが、ログイン後に必要なページを起動できません。

4

2 に答える 2

5

これを行うには、selenium モジュールを使用できます。ブラウザー (chrome、Firefox、IE など) を起動し、ブラウザーを制御できるようにする拡張機能が読み込まれます。

Cookie を読み込む方法は次のとおりです。

from selenium import webdriver
driver = webdriver.Firefox() # open the browser

# Go to the correct domain
driver.get("http://www.example.com")

# Now set the cookie. Here's one for the entire domain
# the cookie name here is 'key' and it's value is 'value'
driver.add_cookie({'name':'key', 'value':'value', 'path':'/'})
# additional keys that can be passed in are:
# 'domain' -> String,
# 'secure' -> Boolean,
# 'expiry' -> Milliseconds since the Epoch it should expire.

# finally we visit the hidden page
driver.get('http://www.example.com/secret_page.html')
于 2013-05-25T05:50:32.730 に答える
1

Cookie がブラウザに届いていません。

webbrowserCookieJarインスタンスに保存されている Cookie を受け入れる機能はありません。これは、URL を使用してブラウザーを起動するための単なる一般的なインターフェイスです。CookieJarブラウザに Cookie を保存できるを実装するか(これは簡単な作業ではありません)、この問題を解決する別のライブラリを使用する必要があります。

于 2013-01-21T19:09:37.540 に答える