У меня есть этот скрипт, использующий Selenium для входа в систему и перехода по веб-сайту на целевую страницу, затем я использую POST HTTPRequest для отправки формы вместе с поиском капчи.
Причина, по которой я хочу использовать HTTPRequest, заключается в том, что на сайте практически невозможно получить точный необходимый элемент для заполнения и отправки формы (xPath и CSS также не работают)
Мой вопроскак я могу сделать это лучше?И как я могу получить ограничение скорости, чтобы у аккаунта не было проблем?
Так вот часть моего кода, где мне нужно отправить форму.
def work(self):
try:
proxy = self.get_proxy()
self.chrome_options.add_argument('--proxy-server=socks://{}'.format(proxy))
self.driver = webdriver.Chrome(chrome_options=self.chrome_options, executable_path=self.exe_path)
self.driver.get(self.web_url)
ua = UserAgent()
if self.is_visible('g-recaptcha') is True:
cookies = pickle.dump(self.driver.get_cookies())
js = '''
var piggy = new XMLHttpRequest();
piggy.open('POST', 'https://website.com', true);
piggy.setRequestHeader(
'Accept', 'application/json, text/plain, */*';
'User-Agent', '{}'.format(au.random);
'Content-Type', 'application/json';
'Referer', 'https://website.com';
'Cookie', '{}'.format(cookies);
);
piggy.send('"info": "{}".format('Some Info'), "captcha": "{}".format(self.captoken());
return this.responseText
};
'''
result = self.driver.execute_script(js)
print(result)
except Exception as e:
print('Error on line {}'.format(sys.exc_info()[-1].tb_lineno), type(e).__name__, e)