@@ -31,7 +31,10 @@ class Zimuku_Agent:
3131 def __init__ (self , base_url , dl_location , logger , unpacker , settings ):
3232 self .ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'
3333 self .ZIMUKU_BASE = base_url
34- self .ZIMUKU_API = '%s/search?q=%%s&vertoken=%%s' % base_url
34+ self .INIT_PAGE = base_url + '/?security_verify_data=313932302c31303830'
35+ #self.ZIMUKU_API = '%s/search?q=%%s&vertoken=%%s' % base_url
36+ self .TOKEN_PARAM = 'security_verify_data=313932302c31303830'
37+ self .ZIMUKU_API = '%s/search?q=%%s' % base_url
3538 self .DOWNLOAD_LOCATION = dl_location
3639 self .FILE_MIN_SIZE = 1024
3740
@@ -41,10 +44,22 @@ def __init__(self, base_url, dl_location, logger, unpacker, settings):
4144 self .session = requests .Session ()
4245 self .vertoken = ''
4346
47+ # 一次性调用,获取那个vertoken。目测这东西会过期,不过不管那么多了,感觉过两天验证机制又要变
48+ # self.init_site()
49+
4450 def set_setting (self , settings ):
4551 # for unittestting purpose
4652 self .plugin_settings = settings
4753
54+ def init_site (self ):
55+ self .session .cookies .set (
56+ 'srcurl' , '68747470733a2f2f7a696d756b752e6f72672f' )
57+ self .get_page (self .ZIMUKU_BASE )
58+
59+ self .get_page (self .INIT_PAGE )
60+ _ , resp = self .get_page (self .ZIMUKU_BASE )
61+ self .get_vertoken (resp )
62+
4863 def get_page (self , url , ** kwargs ):
4964 """
5065 Get page with requests session.
@@ -68,20 +83,19 @@ def get_page(self, url, **kwargs):
6883
6984 a = requests .adapters .HTTPAdapter (max_retries = 3 )
7085 s .mount ('http://' , a )
71- self .logger .log (sys ._getframe ().f_code .co_name , 'requests GET [%s]' % (url ))
7286
73- url += '&' if '?' in url else '?'
74- url += 'security_verify_data=313932302c31303830'
87+ #url += '&' if '?' in url else '?'
88+ #url += 'security_verify_data=313932302c31303830'
89+
90+ self .logger .log (sys ._getframe ().f_code .co_name ,
91+ 'requests GET [%s]' % (url ), level = 3 )
7592
76- # https://github.com/pizzamx/zimuku_for_kodi/pull/5/commits/5d4ed2fbd87dc08682884c874018ac0f9f35b25c
77- url1 = url + '&security_verify_data=313932302c31303830'
78- url2 = url + '?security_verify_data=313932302c31303830'
79- s .get (url , headers = request_headers )
80- s .get (url1 , headers = request_headers )
8193 http_response = s .get (url , headers = request_headers )
94+ """
8295 if http_response.status_code != 200:
8396 s.get(url, headers=request_headers)
8497 http_response = s.get(url, headers=request_headers)
98+ """
8599
86100 headers = http_response .headers
87101 http_body = http_response .content
@@ -181,22 +195,21 @@ def extract_sub_info(self, sub, lang_info_mode):
181195 "lang" : langs
182196 }
183197
184- def get_vertoken (self ):
198+ def get_vertoken (self , resp ):
185199 # get vertoken from home page and cache it for the session
186- if self .vertoken :
187- return self .vertoken
188- else :
189- self .logger .log (sys ._getframe ().f_code .co_name , "Fetching new vertoken form home page" )
190- try :
191- headers , data = self .get_page (self .ZIMUKU_BASE + '/' )
192- hsoup = BeautifulSoup (data , 'html.parser' )
193- vertoken = hsoup .find ('input' , attrs = {'name' : 'vertoken' }).attrs .get ('value' , '' )
194- self .vertoken = vertoken
195- return vertoken
196- except Exception as e :
197- self .logger .log (sys ._getframe ().f_code .co_name , 'ERROR GETTING vertoken, E=(%s: %s)' %
198- (Exception , e ), level = 3 )
199- return ''
200+ self .logger .log (sys ._getframe ().f_code .co_name ,
201+ "Fetching new vertoken form home page" )
202+ try :
203+ headers , data = self .get_page (self .ZIMUKU_BASE + '/' )
204+ hsoup = BeautifulSoup (resp , 'html.parser' )
205+ vertoken = hsoup .find (
206+ 'input' , attrs = {'name' : 'vertoken' }).attrs .get ('value' , '' )
207+ self .vertoken = vertoken
208+ return vertoken
209+ except Exception as e :
210+ self .logger .log (sys ._getframe ().f_code .co_name , 'ERROR GETTING vertoken, E=(%s: %s)' %
211+ (Exception , e ), level = 3 )
212+ return ''
200213
201214 def search (self , title , item ):
202215 """
@@ -218,13 +231,19 @@ def search(self, title, item):
218231 """
219232 subtitle_list = []
220233
221- vertoken = self .get_vertoken ()
234+ # vertoken = self.get_vertoken()
222235
223- url = self . ZIMUKU_API % (urllib . parse . quote ( title ), vertoken )
224- self . logger . log ( sys . _getframe (). f_code . co_name ,
225- "Search API url: %s" % ( url ) )
236+ get_cookie_url = '%s&%s' % (self . ZIMUKU_API %
237+ ( urllib . parse . quote ( title )), self . TOKEN_PARAM )
238+ url = self . ZIMUKU_API % urllib . parse . quote ( title )
226239 try :
227- # Search page.
240+ # 10/10/22: 变成搜索要先拿 cookie
241+ self .get_page (url )
242+ self .get_page (get_cookie_url )
243+
244+ # 真正的搜索
245+ self .logger .log (sys ._getframe ().f_code .co_name ,
246+ "Search API url: %s" % (url ))
228247 headers , data = self .get_page (url )
229248 soup = BeautifulSoup (data , 'html.parser' )
230249 except Exception as e :
@@ -565,4 +584,4 @@ def download_links(self, links, referer):
565584 return '' , ''
566585
567586 def close (self ):
568- self .session .close ()
587+ self .session .close ()
0 commit comments