getFreeProxy.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """
  4. -------------------------------------------------
  5. File Name: GetFreeProxy.py
  6. Description : 通过关键字扫描censys.io中的疑似ip
  7. Author : JHao
  8. date: 2016/11/25
  9. -------------------------------------------------
  10. Change Activity:
  11. 2017/06/15: 通过关键字扫描censys.io中的疑似ip
  12. -------------------------------------------------
  13. """
  14. import json
  15. import requests
  16. import threading
  17. API_URL = "https://www.censys.io/api/v1/search/"
  18. UID = "45bbe9db-87c9-4256-b1f0-0509037f1e84"
  19. SECRET = "DqtxZX43liWHZPY0gNLkorptTCIaAgyu"
  20. KEY_WORD = ['Squid', 'CCProxy', 'Tinyproxy', 'Wingate', 'Pound', 'Proxy', 'Mikrotik']
  21. class GetFreeProxy(object):
  22. """
  23. proxy getter
  24. """
  25. def __init__(self):
  26. pass
  27. @staticmethod
  28. def scanner_ip():
  29. for key in KEY_WORD:
  30. print('Search Key: {key}'.format(key=key))
  31. t = ThreadScanner(key)
  32. t.start()
  33. class ThreadScanner(threading.Thread):
  34. def __init__(self, key):
  35. super(ThreadScanner, self).__init__()
  36. self.key = key
  37. self.query = {'query': self.key, 'page': 1, 'fields': ['ip']}
  38. def run(self):
  39. self.scanner_ip()
  40. def get_total_page(self):
  41. res = requests.post(API_URL + 'ipv4', data=json.dumps(self.query),
  42. auth=(UID, SECRET), timeout=30)
  43. res_result = res.json()
  44. total_page = res_result.get('metadata').get('pages', 400)
  45. return total_page
  46. def scanner_ip(self):
  47. total_page = self.get_total_page()
  48. for page in range(1, total_page):
  49. self.query.update({'page': page})
  50. try:
  51. res = requests.post(API_URL + 'ipv4', data=json.dumps(self.query),
  52. auth=(UID, SECRET), timeout=30)
  53. res_result = res.json()
  54. total_page = res_result.get('metadata').get('pages')
  55. ip_results = res_result.get('results')
  56. except Exception as e:
  57. ip_results = list()
  58. for each_ip in ip_results:
  59. ip = each_ip.get('ip')
  60. print(ip)
  61. if page >= total_page:
  62. break
  63. print('Key {k} page: {p}'.format(k=self.key, p=page))
  64. if __name__ == '__main__':
  65. g = GetFreeProxy()
  66. g.scanner_ip()