У меня есть скрипт python, который использует селен для входа на определенный сайт. Но после ввода учетных данных corrent панель мониторинга не пропустит сценарий до go. Вместо этого он дает нам «403: запрещенная ошибка». Странно то, что он работает на моей локальной машине, но такое поведение происходит только на сервере Digital Ocean.
Это код, который я создал:
chrome_options = Options()
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--headless")
chrome_options.add_argument(f'--user-agent={user_agent}')
PROXY = proxies[10].get_address()
webdriver.DesiredCapabilities.CHROME['proxy'] = {
"httpProxy": PROXY,
"ftpProxy": PROXY,
"sslProxy": PROXY,
"proxyType": "MANUAL",
}
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=chrome_options)
pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
});
if (window.self === window.top) { // if main document
console.log('add script');
}
"""
})
driver.get("https://ahrefs.com/user/login")
wait = WebDriverWait(driver, 30)
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
"""
3. Fill in the username and password, then click the login button.
"""
try:
wait.until(EC.element_to_be_clickable((By.ID, "email_input")))
email = driver.find_element_by_id('email_input')
password_ = driver.find_element_by_name('password')
login_btn = driver.find_element_by_id('SignInButton')
login_form = driver.find_element_by_id('formLogin')
# TEST-ACCOUNT
email.send_keys('{email_address}')
password_.send_keys('{password}')
login_btn.click()
driver.save_screenshot(os.path.join(project_dir, 'login-checking.png'))
except TimeoutError as e:
driver.close()
driver.quit()
print("Successfully logged in..")
time.sleep(10.0)
driver.get('https://ahrefs.com/batch-analysis')
print(driver.current_url)
driver.save_screenshot(os.path.join(project_dir, 'login-ok.png'))