| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import os, time
- import random
- from dotenv import load_dotenv
- from selenium import webdriver
- from selenium.webdriver import Keys
- from selenium.webdriver.chrome.service import Service
- from selenium.webdriver.common.by import By
- from selenium.webdriver.chrome.options import Options
- # 加载 .env 文件
- load_dotenv()
- DEV_MODE = os.getenv("DEV_MODE", "true").lower() in ["true", "1"] # 是否是调试模式
- def main():
- # 设置 ChromeDriver 的路径
- chromedriver_path = f"{os.path.dirname(os.path.abspath(__file__))}/drivers/{os.getenv('DRIVER_NAME')}"
- # 配置浏览器设置
- chrome_options = Options()
- # 设置浏览器路径
- chrome_options.binary_location = os.getenv("BROWSER_PATH")
- DEV_MODE or chrome_options.add_argument("--headless") # 根据是否是dev设置无头模式
- chrome_options.add_argument("--no-sandbox")
- chrome_options.add_argument("--disable-dev-shm-usage")
- chrome_options.add_argument("--disable-blink-features=AutomationControlled")
- # 设置浏览器语言和时区
- chrome_options.add_argument("--lang=en-US")
- prefs = {
- "intl.accept_languages": "en-US,en",
- "timezone": "Asia/Singapore",
- }
- chrome_options.add_experimental_option("prefs", prefs)
- # 运行脚本后不关闭,方便查看
- chrome_options.add_experimental_option("detach", DEV_MODE)
- # 数据目录(重要:以后可以拷贝这个目录到其他机器上,实现浏览器环境移植,以实现免登录等)
- chrome_options.add_argument(f"user-data-dir={os.getenv("USER_DATA_DIR")}")
- chrome_options.add_argument(f"profile-directory=Default")
- # 初始化 ChromeDriver
- service = Service(chromedriver_path)
- driver = webdriver.Chrome(service=service, options=chrome_options)
- # 随机位置和大小
- driver.set_window_position(random.randint(50, 100), random.randint(50, 100))
- driver.set_window_size(random.randint(1440, 1880), random.randint(900, 1000))
- # 打开 Twitch
- driver.get("https://www.twitch.tv/drops/campaigns")
- # 用户名框
- username_box = driver.find_element(By.XPATH, '//*[@id="login-username"]')
- if username_box is not None:
- username_box.click()
- time.sleep(2)
- username_box.send_keys(os.getenv("TWITCH_USERNAME"), Keys.TAB)
- password_box = driver.switch_to.active_element
- time.sleep(1)
- password_box.send_keys(os.getenv("TWITCH_PASSWORD"), Keys.RETURN)
- print(driver.title)
- DEV_MODE or driver.quit()
- if __name__ == "__main__":
- main()
|