SSL Zugriff mit Python https

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

Hallo,

das ist ja das grosse Thema, dass es in Python 2 keinen Support für Zugriff auf https Websiten über einen Proxy gibt.
Geht das denn jetzt in Python 3 ??
Zuletzt geändert von blurry333 am Montag 10. November 2014, 20:52, insgesamt 1-mal geändert.
BlackJack

@blurry333: Ähm, wo hast Du die ”Information” denn her? Ich würde das `requests`-Modul für HTTP(S) empfehlen. Dann hat man bei Python 2 und 3 die gleiche API, die auch etwas hübscher ist als die aus der jeweiligen Standardbibliothek.

Edit: Python 2:

Code: Alles auswählen

In [40]: c = urllib2.urlopen('https://www.google.de/')

In [41]: d = c.read()

In [42]: len(d)
Out[42]: 17472
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

Hi,

also urllib2 unterstützt es auf keinen Fall. Und die wollte ich eigentlich verwenden. Ich weiss nicht ob das in Python3 anders ist.
Also in meinem Fall muss ich itunes aufrufen was https verwendet. Ups was ich total vergessen habe der Zugriff erfolgt mit Hilfe eines Proxys der Authentifizierung erwartet. Das ist das entscheidende dabei :) Sorry
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

Das requests Modul gehört wohl nicht zur Standardbibliothek ? Urllib2 dagegen ist Teil der Standardbibliothek aber die API hat sich von Python 2 zu Python 3 geändert ?
BlackJack

@blurry333: Ja die API hat sich geändert, zumindest in soweit als da einiges an Modulen umbenannt/verschoben wurde, damit es ein wenig logischer/geordneter ist. `requests` hat aber auch auch eindeutig die schönere API, also nicht so einen halben Millimeter über der HTTP-Spezifikation, sondern so wie man das als Programmierer gerne hätte, in benutzbar. :-)
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

Aber requests ist nicht Teil der Standardbibliothek wohingegen Urllib2 schon ?

Aber weisst du ob das jetzt schon geht dass man https WEbsiten über einen Proxy abfragen kann ? Angeblich geht das nämlich nicht ?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

blurry333 hat geschrieben:Aber requests ist nicht Teil der Standardbibliothek wohingegen Urllib2 schon ?
Und wo ist da nun genau das Problem? Einfach installieren und fertig. Warum willst du unnötige Umwege machen, wenn es auch einfach geht?
Das Leben ist wie ein Tennisball.
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

keine Ahnung ob mit requests Zugriff von https über proxy möglich ist
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hast du auch nur mal in die Dokumentation von `urllib2` geschaut? https://docs.python.org/2/library/urllib2.html
Ggf musst du einen Opener mit HTTPS- und Proxy-Handler erzeugen.

Da `requests` aber eine reine Python Bibliothek ist verstehe ich nicht warum man nicht gleich `requests` benutzt.
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

ja ich kenn die Doku aber das ist mir echt zu umfangreich. Du würdest es also mit requests statt mit Urllib2 machen ?
Gibt es da ein verlässliches Code Beispiel . Also habe einen Proxy mit Authentifizierung.


Und kann mir mal einer diese Syntax in der Doku erklären z.B.

OpenerDirector.open(url[, data][, timeout])¶

Was will der denn übergeben bekommen ? Was ist [,data] . Ein array ? Warum das Komma zuerst ? Hab ich noch nie gesehen.
BlackJack

@blurry333: Die eckigen Klammern bedeuten dass das optional ist, das ist keine Python-Syntax, und ein Komma braucht man um Argumente voneinander zu trennen.

Was `data` genau ist/sein muss steht bei `urlopen()`, worauf die Dokumentation von `OpenerDirector.open()` ja verweist.
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

Das mit dem optional hab ich verstanden , aber warum das Komma in den eckigen klammern ? Um Argumente zu trennen kenn ich nur das

funk(arg1, arg2, arg3 ) oder funk(arg1,[arg2], [arg3] )
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@blurry333: Deine Art zu fragen ist seltsam. Warum hören die sich alle wie Vorwürfe an?
Bei einem optionale Argument ist natürlich das Komma auch optional. Wenn kein zweites Argument angegeben wird, braucht man auch kein Komma.
BlackJack

@blurry333: Na weil das Komma nur gesetzt wird wenn man auch das Argument angibt. Du schreibst ja beim Aufruf einer Funktion mit einem optionalen zweiten Argument nicht ``spam(42,)`` sondern nur ``spam(42)``, also wird die Signatur auch als ``spam(a [, b])`` angegeben. Denn wenn man `b` beim Aufruf weg lässt, lässt man auch das Komma davor weg.
blurry333
User
Beiträge: 12
Registriert: Montag 10. November 2014, 20:34

cute:)
hat mich jetzt trotzdem mehr verwirrt als geholfen. Ich mein dass man ein Komma weglässt wenn der Paramter optional ist
sollte ja selbstverständlich sein. Aber danke jetzt hab ichs verstanden :)
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

blurry333 hat geschrieben:Ich mein dass man ein Komma weglässt wenn der Paramter optional ist sollte ja selbstverständlich sein.
Ist es aber nicht.

Hier mal ein Beispiel für VBA.

Code: Alles auswählen

Private Sub Test(Optional x As String = "x", Optional y As String = "y", Optional z As String = "z")
    Debug.Print x, y, z
End Sub

Public Sub Run()
    Test "a", , "b"
End Sub
Antworten