cookie_pool.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import json
  2. import sys
  3. import time
  4. import requests
  5. import re,execjs
  6. from selenium.webdriver import ActionChains
  7. sys.path.append('/mnt/topic_spider/zgztb_cookie/FworkSpider')#
  8. from feapder.utils.webdriver import WebDriver
  9. from feapder.utils.log import log
  10. from FworkSpider.untils.cookie_pool import PageCookiePool
  11. from feapder.utils import tools
  12. from feapder.utils.redis_lock import RedisLock
  13. class WebCookiePool(PageCookiePool):
  14. def __init__(self, redis_key, page_url=None,cookie_key=None,
  15. min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs):
  16. super(WebCookiePool, self).__init__(redis_key, page_url=None,
  17. min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs)
  18. self.page_url = page_url
  19. self.cookie_key = cookie_key
  20. self._kwargs = kwargs
  21. self._kwargs.setdefault("load_images", False)
  22. self._kwargs.setdefault("headless", True)
  23. # self._kwargs.setdefault("executable_path", "D:\\geckodriver.exe")
  24. self._kwargs.setdefault("driver_type", "FIREFOX")
  25. self.proxies = None
  26. def create_cookies(self,proxies):
  27. # print('此时代理ip使用的是:',self.proxies)
  28. self._kwargs.setdefault("proxy", proxies)
  29. with WebDriver(**self._kwargs) as driver_pool:
  30. import time
  31. # print(driver_pool.page_source)
  32. try:
  33. # driver_pool = self.driver_pool.get()
  34. js = "return window.navigator.webdriver"
  35. result = driver_pool.execute_script(js)
  36. print(' window.navigator.webdriver >>> ', result)
  37. driver_pool.get(self.page_url)
  38. # print(driver_pool.page_source)
  39. # import pdb
  40. # pdb.set_trace()
  41. time.sleep(3)
  42. for i in range(4):
  43. try:
  44. slider = driver_pool.find_element_by_xpath("//span[contains(@class, 'nc_iconfont btn_slide')]")
  45. if slider.is_displayed():
  46. # 点击并且不松开鼠标
  47. ActionChains(driver_pool).click_and_hold(on_element=slider).perform()
  48. # 往右边移动258个位置
  49. ActionChains(driver_pool).move_by_offset(xoffset=258, yoffset=0).perform()
  50. # 松开鼠标
  51. ActionChains(driver_pool).pause(1).release().perform()
  52. except Exception as e:
  53. print(e)
  54. time.sleep(10)
  55. if 'nc_iconfont btn_slide' in driver_pool.page_source:
  56. continue
  57. else:
  58. break
  59. # print(driver_pool.page_source)
  60. cookies = driver_pool.cookies
  61. return cookies
  62. except Exception as e:
  63. log.error(f"获取cookie失败,{e}")
  64. if __name__ == '__main__':
  65. # for i in range(1):
  66. cookies =WebCookiePool(redis_key='gdcookie',page_url="http://www.user-agent.cn/").create_cookies("socks5://36.7.252.15:8860")
  67. print(cookies)