[PYTHON] problem z urllib2

Tutaj umieszczamy tematy związane z językami programowania niepasującymi do innych działów.
Regulamin forum
Temat prosimy poprzedzić nazwą języka umieszczonego w nawiasach kwadratowych np. [Pascal].
Awatar użytkownika
PROTON
Expert
Expert
Posty: 531
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

[PYTHON] problem z urllib2

Postautor: PROTON » środa 13 kwie 2016, 16:46

Był sobie działający program w pythone, po aktualizacji Pythona do wersji 2.7.9 przestał działać.
A dokładniej zaczą wywalać następujący błąd: URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>
Lekarstwem na to jest do wywołania urllib2.urlopen dodanie takiego context'u: context = ssl._create_unverified_context()
Program zadziałał ALE! z powodu dodania contextu przestał działać CookieJar, odpowiedzialny za przechowywanie ciasteczek sesji.
I nie wiem jak to naprawić, przetestowałem w Pythonie3 i tam działa bez problemu.

Poniżej przedstawiam test problemu, jak wywołam print urllib2.urlopen(urllib2.Request(url, headers = hdr)).read()
to ciasteczka są, jak wywołam: print urllib2.urlopen(urllib2.Request(url, headers = hdr), context = context ).read() to ciasteczek niema.

Kod: Zaznacz cały

#!/usr/bin/python
#coding:utf-8

import urllib2
import cookielib
import ssl
import json

# remedium na: URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>
context = ssl._create_unverified_context()

url = "http://www.wp.pl"

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
       'Accept-Encoding': 'none',
       'Accept-Language': 'en-US,en;q=0.8',
       'Connection': 'keep-alive'}

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

#print urllib2.urlopen(urllib2.Request(url, headers = hdr), context = context ).read()
print urllib2.urlopen(urllib2.Request(url, headers = hdr)).read()


for cookie in cj:
   print(cookie.name, cookie.value, cookie.domain)

Gott weiß ich will kein Engel sein.

Awatar użytkownika
PROTON
Expert
Expert
Posty: 531
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

Re: [PYTHON] problem z urllib2

Postautor: PROTON » czwartek 14 kwie 2016, 10:46

Problem rozwiązany, użyłem biblioteki requests
http://docs.python-requests.org/en/master/
Gott weiß ich will kein Engel sein.


Wróć do „Inne języki programowania”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość