@@ -142,7 +142,8 @@ def _check_header(self):
142142 else :
143143 headers = {}
144144 # add user agent
145- headers ["User-Agent" ] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
145+ headers [
146+ "User-Agent" ] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
146147 return headers
147148
148149 def dork_search (self , dork , page = 0 , resource = "host" , facets = None ):
@@ -178,8 +179,8 @@ def dork_search(self, dork, page=0, resource="host", facets=None):
178179
179180 return result
180181
181- def multi_page_search (self , dork , page = 1 , resource = "host" ,
182- facets = None ) -> list :
182+ def multi_page_search (self , dork , page = 1 , start_page = 1 , resource = "host" ,
183+ facets = None ) -> ( list , int , str ) :
183184 """
184185 mainly used to search dork data from zoomeye data.
185186 please see: https://www.zoomeye.org/doc#host-search and
@@ -189,6 +190,8 @@ def multi_page_search(self, dork, page=1, resource="host",
189190 dork to search
190191 :param page: int,
191192 specify the number of pages to return data, each page contains 20 data
193+ :param start_page: int,
194+ specify the number of start page to search
192195 :param resource: str,
193196 host search or web search
194197 :param facets: list or tuple
@@ -207,12 +210,20 @@ def multi_page_search(self, dork, page=1, resource="host",
207210
208211 dork_data = []
209212 all_data = []
210- for i in range (page ):
213+ is_search_done = "done"
214+ for i in range (start_page - 1 , page ):
215+ print ("downloading contents from page{}" .format (i + 1 ))
211216 if isinstance (facets , (tuple , list )):
212217 facets = ',' .join (facets )
213218
214219 params = {'query' : dork , 'page' : i + 1 , 'facets' : facets }
215- result = self ._request (search_api , params = params , headers = headers )
220+ try :
221+ result = self ._request (search_api , params = params , headers = headers )
222+ except Exception as e :
223+ # return the processed data
224+ self .data_list = dork_data
225+ self .raw_data = all_data
226+ return dork_data , i , "search failed, the log as {}" .format (e )
216227 if result and "matches" in result :
217228 self .total = result .get ("total" )
218229 all_data .append (result )
@@ -231,7 +242,7 @@ def multi_page_search(self, dork, page=1, resource="host",
231242 # i added it to a list for easy viewing of each piece of data
232243 self .raw_data = all_data
233244 # return processed data
234- return dork_data
245+ return dork_data , page , is_search_done
235246
236247 def resources_info (self ) -> dict :
237248 """
@@ -357,7 +368,6 @@ def generate_dot(self, q, source=0, page=1):
357368 return True , "successful! saving in {}" .format (os .getcwd ())
358369
359370
360-
361371def show_site_ip (data ):
362372 """
363373 show web search
0 commit comments