|
|
@@ -0,0 +1,75 @@
|
|
|
+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()
|