diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py
index e66be74c3925670e71fd9dba5d8d28d597057c13..037253b05acbd7a4f0cffd3e47e5a3208c8e05e3 100644
--- a/sickbeard/providers/generic.py
+++ b/sickbeard/providers/generic.py
@@ -24,11 +24,13 @@ import os
 import re
 import itertools
 import urllib
-import random
+from random import shuffle
+from base64 import b16encode, b32decode
 
-import sickbeard
 import requests
+from hachoir_parser import createParser
 
+import sickbeard
 from sickbeard import helpers, classes, logger, db
 from sickbeard.common import MULTI_EP_RESULT, SEASON_RESULT, USER_AGENT
 from sickbeard import tvcache
@@ -36,15 +38,16 @@ from sickbeard import encodingKludge as ek
 from sickbeard.exceptions import ex
 from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException
 from sickbeard.common import Quality
+from sickbeard.common import user_agents
+
 
-from hachoir_parser import createParser
-from base64 import b16encode, b32decode
 
 class GenericProvider:
     NZB = "nzb"
     TORRENT = "torrent"
 
     def __init__(self, name):
+
         # these need to be set in the subclass
         self.providerType = None
         self.name = name
@@ -71,7 +74,8 @@ class GenericProvider:
 
         self.session = requests.Session()
 
-        self.headers = {'User-Agent': USER_AGENT}
+        shuffle(user_agents)
+        self.headers = {'User-Agent': user_agents[0]}
 
         self.btCacheURLS = [
                 'http://torcache.net/torrent/{torrent_hash}.torrent',
@@ -81,7 +85,7 @@ class GenericProvider:
                 #'http://itorrents.org/torrent/{torrent_hash}.torrent',
             ]
 
-        random.shuffle(self.btCacheURLS)
+        shuffle(self.btCacheURLS)
 
     def getID(self):
         return GenericProvider.makeID(self.name)
diff --git a/sickbeard/providers/libertalia.py b/sickbeard/providers/libertalia.py
index 7b84346b390ca9b1867b147505b92f0fabab5e75..97c720b618c816571280dc467f11464567610ef1 100644
--- a/sickbeard/providers/libertalia.py
+++ b/sickbeard/providers/libertalia.py
@@ -124,8 +124,6 @@ class LibertaliaProvider(generic.TorrentProvider):
         if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()):
             return True
 
-        self.headers.update({'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8'})
-
         login_params = {'username': self.username,
                             'password': self.password
         }
diff --git a/sickbeard/providers/nextgen.py b/sickbeard/providers/nextgen.py
index 1931c6625a4c8ff7dfd0913bb89440211c82f0b8..ed4420d58a035b47f7a433fd02737cd447d4b982 100644
--- a/sickbeard/providers/nextgen.py
+++ b/sickbeard/providers/nextgen.py
@@ -65,8 +65,6 @@ class NextGenProvider(generic.TorrentProvider):
         self.last_login_check = None
 
         self.login_opener = None
-        self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20130519 Firefox/24.0)'}
-
 
     def isEnabled(self):
         return self.enabled
@@ -96,7 +94,7 @@ class NextGenProvider(generic.TorrentProvider):
         now = time.time()
         if self.login_opener and self.last_login_check < (now - 3600):
             try:
-                output = self.getURL(self.urls['test'], headers=self.headers)
+                output = self.getURL(self.urls['test'])
                 if self.loginSuccess(output):
                     self.last_login_check = now
                     return True
@@ -110,10 +108,10 @@ class NextGenProvider(generic.TorrentProvider):
 
         try:
             login_params = self.getLoginParams()
-            data = self.getURL(self.urls['login_page'], headers=self.headers)
+            data = self.getURL(self.urls['login_page'])
             with BS4Parser(data) as bs:
                 csrfraw = bs.find('form', attrs={'id': 'login'})['action']
-                output = self.getURL(self.urls['base_url'] + csrfraw,  headers=self.headers, post_data=login_params)
+                output = self.getURL(self.urls['base_url'] + csrfraw, post_data=login_params)
 
                 if self.loginSuccess(output):
                     self.last_login_check = now
@@ -192,7 +190,7 @@ class NextGenProvider(generic.TorrentProvider):
                 searchURL = self.urls['search'] % (urllib.quote(search_string.encode('utf-8')), self.categories)
                 logger.log(u"" + self.name + " search page URL: " + searchURL, logger.DEBUG)
 
-                data = self.getURL(searchURL, headers=self.headers)
+                data = self.getURL(searchURL)
                 if not data:
                     continue
 
diff --git a/sickbeard/providers/rarbg.py b/sickbeard/providers/rarbg.py
index 4b9b8737d824c67da27fdfc97129a9c8b3a9f35c..3e974e3beba00504b2960965db6be221f4f09576 100644
--- a/sickbeard/providers/rarbg.py
+++ b/sickbeard/providers/rarbg.py
@@ -85,8 +85,6 @@ class RarbgProvider(generic.TorrentProvider):
 
         self.cache = RarbgCache(self)
 
-        self.headers = {'User-Agent': USER_AGENT}
-
     def isEnabled(self):
         return self.enabled
 
@@ -99,7 +97,7 @@ class RarbgProvider(generic.TorrentProvider):
 
         resp_json = None
 
-        response = self.getURL(self.urls['token'], timeout=30, headers=self.headers, json=True)
+        response = self.getURL(self.urls['token'], timeout=30, json=True)
         if not response:
             logger.log(u'Unable to connect to %s provider.' % self.name, logger.WARNING)
             return False
diff --git a/sickbeard/providers/titansoftv.py b/sickbeard/providers/titansoftv.py
index 2d988e24a4a4154ce7a11d3fa024b724281b9a7a..f71fc29f2ea1eef727bfa5c5b91f9e3cdc731daa 100644
--- a/sickbeard/providers/titansoftv.py
+++ b/sickbeard/providers/titansoftv.py
@@ -75,7 +75,7 @@ class TitansOfTVProvider(generic.TorrentProvider):
         search_url = self.url + '?' + urllib.urlencode(params)
         logger.log(u'Search url: %s' % search_url)
 
-        parsedJSON = self.getURL(search_url, headers=self.headers, json=True)  # do search
+        parsedJSON = self.getURL(search_url, json=True)  # do search
 
         if not parsedJSON:
             logger.log(u'No data returned from ' + self.name, logger.ERROR)
diff --git a/sickbeard/providers/xthor.py b/sickbeard/providers/xthor.py
index 85e9a8c03ba44c266fa9f71567720c90d5cd3da6..f39771e71ffffa0dcd94bcb1eca3db0543327ff5 100644
--- a/sickbeard/providers/xthor.py
+++ b/sickbeard/providers/xthor.py
@@ -130,8 +130,6 @@ class XthorProvider(generic.TorrentProvider):
         if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()):
             return True
 
-        self.headers.update({'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8'})
-
         login_params = {'username': self.username,
                         'password': self.password,
                         'submitme': 'X'