drission_page.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import time
  2. from DrissionPage import Chromium, ChromiumOptions, ChromiumPage
  3. from pathlib import Path
  4. from config.settings import OUTPUT_DIR, WORK_DIR, CONFIG_DIR
  5. from mylib.random_ua import get_random_user_agent
  6. from fake_useragent import UserAgent
  7. BROWSER_PATH=r"C:\Program Files\Google\Chrome\Application\chrome.exe"
  8. def genarate_chrome_ini(address="localhost:9321"):
  9. port = address.split(':')[1]
  10. chrome_options = ChromiumOptions().set_browser_path(BROWSER_PATH)
  11. chrome_options.set_address(address)
  12. chrome_options.set_user_data_path(str(OUTPUT_DIR / f'user_data_dir_{port}'))
  13. chrome_options.no_imgs(True).mute(True)
  14. # chrome_options.incognito(True)
  15. path = chrome_options.save(CONFIG_DIR / f'{port}.ini')
  16. return path
  17. def load_chrome_from_ini(path=CONFIG_DIR / '9321.ini', headless=False):
  18. chrome_options = ChromiumOptions(ini_path=path)
  19. page = ChromiumPage(chrome_options)
  20. return page
  21. def fake_ua():
  22. # 创建一个 UserAgent 对象
  23. ua = UserAgent()
  24. # 生成支持的浏览器的 User-Agent 字符串
  25. chrome_ua = ua.chrome # Chrome 浏览器
  26. firefox_ua = ua.firefox # Firefox 浏览器
  27. safari_ua = ua.safari # Safari 浏览器
  28. edge_ua = ua.edge # Chromium Edge 浏览器
  29. # 打印生成的 User-Agent 字符串
  30. print("Chrome User-Agent:", chrome_ua)
  31. print("Firefox User-Agent:", firefox_ua)
  32. print("Safari User-Agent:", safari_ua)
  33. print("Edge User-Agent:", edge_ua)
  34. return chrome_ua
  35. def load_random_ua_chrome(headless=False):
  36. chrome_options = ChromiumOptions()
  37. chrome_options.auto_port(True)
  38. chrome_options.no_imgs(False)
  39. chrome_options.set_user_agent(fake_ua())
  40. chrome_options.arguments.append("--lang=en")
  41. chrome_options.headless(headless)
  42. page = ChromiumPage(chrome_options)
  43. # page.set.auto_handle_alert(True)
  44. return page
  45. def test_random_ua_chrome():
  46. page = load_random_ua_chrome()
  47. tab = page.latest_tab
  48. keyword = "Acalypha rivularis essential oil"
  49. url = f"https://www.google.com/search?q={keyword}"
  50. # url = f"https://www.google.com/"
  51. # url = "https://bot.sannysoft.com/"
  52. tab.get(url)
  53. print(tab.url)
  54. if page.browser._chromium_options.is_headless:
  55. tab.get_screenshot('./1.png')
  56. # page.quit()
  57. def test_normal_chrome():
  58. # genarate_chrome_ini()
  59. page = load_chrome_from_ini()
  60. tab = page.latest_tab
  61. keyword = "Acalypha rivularis essential oil"
  62. url = f"https://www.google.com/search?q={keyword}"
  63. # url = "https://bot.sannysoft.com/"
  64. # recaptcha 验证码检测
  65. # url = "https://patrickhlauke.github.io/recaptcha/"
  66. tab.get(url)
  67. # tab.get_screenshot('./1.png')
  68. # page.quit()
  69. def main():
  70. test_random_ua_chrome()
  71. # test_normal_chrome()
  72. if __name__ == "__main__":
  73. main()