Windowsのユーザー名とパスワードが必要なWebページからデータを取得したいと考えています。Pythonとurllib2によるWindows認証
はこれまでのところ、私が持っている:これはurllib2ので
opener = build_opener()
try:
page = opener.open("http://somepagewhichneedsmywindowsusernameandpassword/")
print page
except URLError:
print "Oh noes."
サポートされていますか?私はPython NTLMを見つけましたが、私のユーザ名とパスワードを入力する必要があります。認証情報を何とか取得する方法はありますか(例えば、IEのように、Firefoxの場合はnetwork.automatic-ntlm-auth.trusted-uris
の設定を変更してください)。
編集だから私は今、これを持っているmsanderの答え
後:かなりよくsocket_server.py
からリッピングされ
# Send a simple "message" over a socket - send the number of bytes first,
# then the string. Ditto for receive.
def _send_msg(s, m):
s.send(struct.pack("i", len(m)))
s.send(m)
def _get_msg(s):
size_data = s.recv(struct.calcsize("i"))
if not size_data:
return None
cb = struct.unpack("i", size_data)[0]
return s.recv(cb)
def sspi_client():
c = httplib.HTTPConnection("myserver")
c.connect()
# Do the auth dance.
ca = sspi.ClientAuth("NTLM", win32api.GetUserName())
data = None
while 1:
err, out_buf = ca.authorize(data) # error 400 triggered by this line
_send_msg(c.sock, out_buf[0].Buffer)
if err==0:
break
data = _get_msg(c.sock)
print "Auth dance complete - sending a few encryted messages"
# Assume out data is sensitive - encrypt the message.
for data in "Hello from the client".split():
blob, key = ca.encrypt(data)
_send_msg(c.sock, blob)
_send_msg(c.sock, key)
c.sock.close()
print "Client completed."
(hereを参照してください)。しかし、私はエラー400 - 悪い要求を取得します。誰か他のアイデアはありますか?
おかげで、
ドム
"認証情報を取得する"とは、ドメイン名とパスワードをどこかから取得してスクリプトで使用することですか?私もそれが可能かどうかを知ってほしい:) – kender
@ケンダー - はい、まさに私が意味するものです。 –
多分anwsers [私の質問](http://stackoverflow.com/questions/356321/scripted-files-download-under-windows)あなたを助けるでしょう。 – kender