Добрый день,
есть один ресурс который скорее всего установил у себя
WAF НО определить что за WAF я так и не смог, вообщем... выскакивает капча которую я пробую обойти следующим способом.
1. Получить html контект
2. Если есть капча то пройти ее 'в ручную' (кстати капча очень простая и мне кажется ее можно попробовать обойти средствами самого селениума...)
3. Сохранить куки в файл
4. При последующем использовании всегда использовать сохраненные куки дабы избежать капчи
#!/usr/bin/env python3
import bs4, time, random, pickle
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
#https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-win64.zip
web_driver = r'geckodriver'
def get_content_selenium(www_url, cookie_save, hide):
op = webdriver.FirefoxOptions()
#Run firefox in hiden mode
if hide:
op.add_argument('--headless')
driver = webdriver.Firefox(executable_path = web_driver, options = op)
#Load cookies and get page
if cookie_save:
cookies = pickle.load(open('cookies_fnac.pkl', 'rb'))
#Sent get request
driver.get(url=www_url)
#Set cookies
for cookie in cookies:
driver.add_cookie(cookie)
#Refresh page
driver.refresh()
#Bypass captcha and save cookies
else:
driver.get(url=www_url)
#Time for bypass captcha
timeout = random.randint(15, 20)
print('timeout: ', timeout)
time.sleep(timeout)
pickle.dump(driver.get_cookies() , open('cookies_fnac.pkl', 'wb'))
#Get html source
html = driver.page_source
return html
def main():
result = get_content_selenium('https://fnac.com', 1, 0)
print(result)
if __name__== "__main__":
main()
Вначале запускаю, прохожу капчу и сохраняю куки:
result = get_content_selenium('https://fnac.com', 1, 0)
Далее использую уже полученные куки с пройденной капчей для доступа к контенту:
result = get_content_selenium('https://fnac.com', 0, 0)
Но капча также выскакивает...
PS: Если кто сможет
максимально красиво решить данную задачу напишите цену вопроса.