diff options
Diffstat (limited to 'pyload/plugins')
-rw-r--r-- | pyload/plugins/Base.py | 2 | ||||
-rw-r--r-- | pyload/plugins/Request.py | 3 | ||||
-rw-r--r-- | pyload/plugins/network/CurlRequest.py | 28 |
3 files changed, 23 insertions, 10 deletions
diff --git a/pyload/plugins/Base.py b/pyload/plugins/Base.py index 97fb027d8..cd03da6ed 100644 --- a/pyload/plugins/Base.py +++ b/pyload/plugins/Base.py @@ -283,7 +283,7 @@ class Base(object): self.logDebug("Deprecated method .correctCaptcha, use .correctTask") self.correctTask() - def decryptCaptcha(self, url, get={}, post={}, cookies=False, forceUser=False, imgtype='jpg', + def decryptCaptcha(self, url, get={}, post={}, cookies=True, forceUser=False, imgtype='jpg', result_type='textual'): """ Loads a captcha and decrypts it with ocr, plugin, user input diff --git a/pyload/plugins/Request.py b/pyload/plugins/Request.py index 651da09f9..f2813c7dd 100644 --- a/pyload/plugins/Request.py +++ b/pyload/plugins/Request.py @@ -2,6 +2,7 @@ from logging import getLogger +from pyload.network.HeaderDict import HeaderDict class ResponseException(Exception): def __init__(self, code, content=""): @@ -31,6 +32,8 @@ class Request(object): # Store options in dict self.options = {} if options is None else options + self.headers = HeaderDict() + # Last response code self.code = 0 self.flags = 0 diff --git a/pyload/plugins/network/CurlRequest.py b/pyload/plugins/network/CurlRequest.py index 03c049cf5..958aff466 100644 --- a/pyload/plugins/network/CurlRequest.py +++ b/pyload/plugins/network/CurlRequest.py @@ -42,6 +42,7 @@ bad_headers = range(400, 418) + range(500, 506) pycurl.global_init(pycurl.GLOBAL_DEFAULT) + class CurlRequest(Request): """ Request class based on libcurl """ @@ -56,6 +57,7 @@ class CurlRequest(Request): self.rep = StringIO() self.lastURL = None self.lastEffectiveURL = None + self.header = "" # cookiejar defines the context self.cj = self.context @@ -96,18 +98,20 @@ class CurlRequest(Request): self.c.setopt(pycurl.COOKIEFILE, "") self.c.setopt(pycurl.COOKIEJAR, "") - #self.c.setopt(pycurl.VERBOSE, 1) + # self.c.setopt(pycurl.VERBOSE, 1) self.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64;en; rv:5.0) Gecko/20110619 Firefox/5.0") if pycurl.version_info()[7]: self.c.setopt(pycurl.ENCODING, "gzip, deflate") - self.c.setopt(pycurl.HTTPHEADER, ["Accept: */*", - "Accept-Language: en-US,en", - "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7", - "Connection: keep-alive", - "Keep-Alive: 300", - "Expect:"]) + + self.headers.update( + {"Accept": "*/*", + "Accept-Language": "en-US,en", + "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", + "Connection": "keep-alive", + "Keep-Alive": "300", + "Expect": ""}) def setInterface(self, options): @@ -175,9 +179,9 @@ class CurlRequest(Request): self.c.setopt(pycurl.POST, 0) if referer and self.lastURL: - self.c.setopt(pycurl.REFERER, str(self.lastURL)) + self.headers["Referer"] = str(self.lastURL) else: - self.c.setopt(pycurl.HTTPHEADER, ["Referer:"]) + self.headers["Referer"] = "" if cookies: for c in self.cj.output().splitlines(): @@ -190,6 +194,8 @@ class CurlRequest(Request): if "auth" in self.options: self.c.setopt(pycurl.USERPWD, str(self.options["auth"])) + self.c.setopt(pycurl.HTTPHEADER, self.headers.to_headerlist()) + def load(self, url, get={}, post={}, referer=True, cookies=True, just_header=False, multipart=False, decode=False): """ load and returns a given page """ @@ -199,6 +205,8 @@ class CurlRequest(Request): self.header = "" if "header" in self.options: + # TODO + print "custom header not implemented" self.c.setopt(pycurl.HTTPHEADER, self.options["header"]) if just_header: @@ -226,6 +234,8 @@ class CurlRequest(Request): self.c.setopt(pycurl.POSTFIELDS, "") self.lastURL = myquote(url) self.lastEffectiveURL = self.c.getinfo(pycurl.EFFECTIVE_URL) + if self.lastEffectiveURL: + self.lastURL = self.lastEffectiveURL self.code = self.verifyHeader() if cookies: |