Strona 1 z 1

[PYTHON] problem z urllib2

: środa 13 kwie 2016, 16:46
autor: PROTON
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)


Re: [PYTHON] problem z urllib2

: czwartek 14 kwie 2016, 10:46
autor: PROTON
Problem rozwiązany, użyłem biblioteki requests
http://docs.python-requests.org/en/master/