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)
