RawProxyCheck.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: RawProxyCheck
  5. Description : check raw_proxy to useful
  6. Author : JHao
  7. date: 2019/8/6
  8. -------------------------------------------------
  9. Change Activity:
  10. 2019/8/6: check raw_proxy to useful
  11. -------------------------------------------------
  12. """
  13. __author__ = 'JHao'
  14. from threading import Thread
  15. try:
  16. from Queue import Empty, Queue # py2
  17. except:
  18. from queue import Empty, Queue # py3
  19. from Util import LogHandler
  20. from Manager import ProxyManager
  21. from ProxyHelper import Proxy, checkProxyUseful
  22. class RawProxyCheck(ProxyManager, Thread):
  23. def __init__(self, queue, thread_name):
  24. ProxyManager.__init__(self)
  25. Thread.__init__(self, name=thread_name)
  26. self.log = LogHandler('raw_proxy_check')
  27. self.queue = queue
  28. def run(self):
  29. self.log.info("RawProxyCheck - {} : start".format(self.name))
  30. self.db.changeTable(self.useful_proxy_queue)
  31. while True:
  32. try:
  33. proxy_json = self.queue.get(block=False)
  34. except Empty:
  35. self.log.info("RawProxyCheck - {} : exit".format(self.name))
  36. break
  37. proxy_obj = Proxy.newProxyFromJson(proxy_json)
  38. proxy_obj, status = checkProxyUseful(proxy_obj)
  39. if status:
  40. if self.db.exists(proxy_obj.proxy):
  41. self.log.info('RawProxyCheck - {} : {} validation exists'.format(self.name,
  42. proxy_obj.proxy.ljust(20)))
  43. else:
  44. self.db.put(proxy_obj)
  45. self.log.info(
  46. 'RawProxyCheck - {} : {} validation pass'.format(self.name, proxy_obj.proxy.ljust(20)))
  47. else:
  48. self.log.info('RawProxyCheck - {} : {} validation fail'.format(self.name, proxy_obj.proxy.ljust(20)))
  49. self.queue.task_done()
  50. def doRawProxyCheck():
  51. proxy_queue = Queue()
  52. pm = ProxyManager()
  53. pm.db.changeTable(pm.raw_proxy_queue)
  54. for _proxy in pm.db.getAll():
  55. proxy_queue.put(_proxy)
  56. pm.db.clear()
  57. thread_list = list()
  58. for index in range(20):
  59. thread_list.append(RawProxyCheck(proxy_queue, "thread_%s" % index))
  60. for thread in thread_list:
  61. thread.start()
  62. for thread in thread_list:
  63. thread.join()
  64. if __name__ == '__main__':
  65. doRawProxyCheck()