summaryrefslogtreecommitdiffstats
path: root/pyload/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/plugins')
-rw-r--r--pyload/plugins/Base.py2
-rw-r--r--pyload/plugins/Request.py3
-rw-r--r--pyload/plugins/network/CurlRequest.py28
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: