def __init__(self, url, request_cookiejar): super(NikeBrowser, self).__init__() self.setWindowTitle('终结者浏览器') # 将字典转化成QNetworkCookieJar的格式 self.cookie_jar = QtNetwork.QNetworkCookieJar() cookies = [] # 直接通过cookie.name和cookie.value的方式迭代 for cookie in request_cookiejar: my_cookie = QtNetwork.QNetworkCookie( QtCore.QByteArray(cookie.name), QtCore.QByteArray(cookie.value)) my_cookie.setDomain('.nike.com') cookies.append(my_cookie) self.cookie_jar.setAllCookies(cookies) self.page().networkAccessManager().setCookieJar(self.cookie_jar) # self.cookie_jar.setCookiesFromUrl(cookies, QUrl # ('https://secure-store.nike.com/cn/checkout/html/cart.jsp?country=CN&l=cart&site=nikestore&returnURL=http://www.nike.com/cn/zh_cn/')) self.load(QtCore.QUrl(url)) self.show()
def cookiesForUrl(self, url): cookieList = [] for (name, value) in self._cookies.get(url.host(), {}).items(): cookieList.append(QtNetwork.QNetworkCookie(name, value)) return cookieList
def _cookiesFromCookieList(self, cookie_list): cookies = [] for (name, value) in cookie_list: c = QtNetwork.QNetworkCookie(name, value) cookies.append(c) return cookies
def Browse(self, url, quality): if 'kissanime' in url: cookie_file = '/tmp/AnimeWatch/kcookie.txt' elif 'kisscartoon' in url: cookie_file = '/tmp/AnimeWatch/kcookieC.txt' elif 'kissasian' in url: cookie_file = '/tmp/AnimeWatch/kcookieD.txt' elif 'masterani' in url: cookie_file = '/tmp/AnimeWatch/animeSquare.txt' elif 'animeget' in url: cookie_file = '/tmp/AnimeWatch/animeget.txt' elif 'animeplace' in url: cookie_file = '/tmp/AnimeWatch/animeplace.txt' elif 'moetube' in url: cookie_file = '/tmp/AnimeWatch/animeHQ.txt' #if os.path.exists(cookie_file): # os.remove(cookie_file) if 'animeget' in url or 'masterani' in url or 'animeplace' in url or 'moetube' in url: content = ccurl(url) else: content = 'checking_browser' if 'checking_browser' in content: if not os.path.exists(cookie_file): self.cookie = QtNetwork.QNetworkCookieJar() self.nam = NetWorkManager() self.nam.setCookieJar(self.cookie) else: cookie_arr = QtNetwork.QNetworkCookieJar() c = [] f = open(cookie_file, 'r') lines = f.readlines() f.close() for i in lines: k = re.sub('\n', '', i) l = k.split(' ') d = QtNetwork.QNetworkCookie() d.setDomain(l[0]) if l[1] == 'TRUE': l1 = True else: l1 = False d.setHttpOnly(l1) d.setPath(l[2]) if l[3] == 'TRUE': l3 = True else: l3 = False d.setSecure(l3) l4 = int(l[4]) print(l4) d.setExpirationDate(QtCore.QDateTime.fromTime_t(l4)) d.setName(l[5]) d.setValue(l[6]) c.append(d) #cookie_arr.append(d) cookie_arr.setAllCookies(c) self.nam = NetWorkManager() self.nam.setCookieJar(cookie_arr) self.web = Browser(url, quality) self.tab_2 = QtGui.QWidget() self.tab_2.setMaximumSize(300, 50) self.tab_2.setWindowTitle('Wait!') self.horizontalLayout_5 = QtGui.QVBoxLayout(self.tab_2) print('Browse: ' + url) self.horizontalLayout_5.addWidget(self.web) self.tab_2.show() #self.tab_2.hide() #self.web.show() self.web.page().setNetworkAccessManager(self.nam) self.web.load(QUrl(url)) cnt = 0 while (not os.path.exists(cookie_file) and cnt < 20): #print() print('wait Clouflare ') time.sleep(1) QtGui.QApplication.processEvents() cnt = cnt + 1 self.tab_2.setWindowTitle('Wait! Cloudflare ' + str(cnt) + 's') if cnt >= 20 and not os.path.exists(cookie_file): f = open(cookie_file, 'w') f.close() lnk_file = '/tmp/AnimeWatch/lnk.txt' if os.path.exists(lnk_file): os.remove(lnk_file) cnt = 0 if ('kisscartoon' in url or 'kissasian' in url) and quality: while (not os.path.exists(lnk_file) and cnt < 20): print('wait Finding Link ') time.sleep(1) QtGui.QApplication.processEvents() cnt = cnt + 1 self.tab_2.setWindowTitle('Link Resolving ' + str(cnt) + 's') if os.path.exists(lnk_file): self.web.setHtml('<html>Link Obtained</html>') link = open(lnk_file).read() print(link) else: self.web.setHtml('<html>No Link Found</html>') print('No Link Available or Clear The Cache') else: self.web.setHtml('<html>cookie Obtained</html>') self.tab_2.hide() else: f = open(cookie_file, 'w') f.close()