cookielib und proxyauth

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

cookielib und proxyauth

Beitragvon Clython » Sonntag 25. Dezember 2005, 16:40

Hallo

da ich nicht besonders Lust habe stundenlang im dunklen zu tappen mal folgende Frage:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF8 -*-

# connect2ln 0.01
# Author: Maël Mettler
# Home: www.mediamonger.ch
# e-mail: ln2xml@mediamonger.ch
# License: GNU v2
import urllib2
import cookielib


the_url = 'http://www.lexisnexis.com/de/business/search/loadForm.do'
user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050514 Firefox/1.0.4'
headers = { 'User-Agent' : user_agent,
            "Accept" : "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Accept-Language" : "en-us,en;q=0.5",
#"Accept-Encoding" : "gzip,deflate",
"Accept-Charset" : "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
"Keep-Alive" : "300",
"Proxy-Connection" : "keep-alive",
"Proxy-Authorization" : "Basic czAxNzEyMTg6Kk5hcnV0MA=="}
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.ProxyBasicAuthHandler()
auth_handler.add_password('unizh.ch', 'proxy.unizh.ch:3128', name, pass)
opener = urllib2.build_opener(auth_handler)
   
#
   
cj = cookielib.CookieJar()
opener2 = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
urllib2.install_opener(opener2)
req = urllib2.Request(the_url, None, headers)
side = urllib2.urlopen(req)
html = side.read()
file = open("result.htm", "w")
file.write(html)
file.close()


Mit diesem Aufruf habe ich jetzt genau den HTTP-Aufruf des Browsers simuliert, ohne die Cookies. Wie krieg ich jetzt die noch hin, in der Hoffnung, dass die Authentifizierung dann stimmt?
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Sonntag 25. Dezember 2005, 17:45

Ich hab das grösste Problem gefunden (danke ethereal)! Wenn ich den Code ausführe, geht die Verbindung nicht über den Uni-Proxy (was für die Authentifizierung sorgt). Was mache ich falsch? Laut meinen Beispielen sollte das so funktionieren?
Gast

Beitragvon Gast » Dienstag 27. Dezember 2005, 19:56

Kann mir mal jemand sagen, warum ich bei diesem Code:

Code: Alles auswählen

import urllib2
import cookielib

#the_url = 'http://www.lexisnexis.com/de/business/search/loadForm.do'
the_url = 'http://www.meineip.de'

#the_url = "http://www.qtsyndrome.ch"
user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050514 Firefox/1.0.4'
headers = { 'User-Agent' : user_agent,
            "Accept" : "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Accept-Language" : "en-us,en;q=0.5",
#"Accept-Encoding" : "gzip,deflate",
"Accept-Charset" : "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
"Keep-Alive" : "300",
"Proxy-Connection" : "keep-alive",
#"Cookies" : "TERMS=2 1134815955495 DE:G-06282004.S-05302005.C-05182004 DE:G-06282004.S-11152005.C-05182004",
"Proxy-Authorization" : "Basic czAxNzEyMTg6Kk5hcnV0MA=="}
req = urllib2.Request(the_url, None, headers)

cj = cookielib.CookieJar()

passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
passmgr.add_password(None, 'http://proxy.unizh.ch:3128', user, passwd)
authinfo = urllib2.ProxyDigestAuthHandler(passmgr)
proxy_support = urllib2.ProxyHandler({"http" : "proxy.unizh.ch:3128"})

opener = urllib2.build_opener(proxy_support, authinfo, urllib2.HTTPCookieProcessor(cj))

urllib2.install_opener(opener)

f = urllib2.urlopen("http://www.meineip.de")

buf = f.read()
print buf
f.close()


diese Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "urltesting.py", line 40, in ?
    f = urllib2.urlopen("http://www.meineip.de")
  File "/usr/lib/python2.4/urllib2.py", line 130, in urlopen
    return _opener.open(url, data)
  File "/usr/lib/python2.4/urllib2.py", line 358, in open
    response = self._open(req, data)
  File "/usr/lib/python2.4/urllib2.py", line 376, in _open
    '_open', req)
  File "/usr/lib/python2.4/urllib2.py", line 337, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.4/urllib2.py", line 573, in <lambda>
    lambda r, proxy=url, type=type, meth=self.proxy_open: \
  File "/usr/lib/python2.4/urllib2.py", line 580, in proxy_open
    if '@' in host:
TypeError: iterable argument required


Edit (Leonidas): Code in Python-Tags gesetzt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder