Есть ли способ использовать запросы и Selenium для выполнения запроса GET, который требует аутентификации и javascript? - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь полуавтоматизировать запрос на веб-сайт для собственного использования, но у меня возникают проблемы. На веб-сайте используются recaptcha и cloudflare (нет, я не прошу обхода или чего-то в этом роде), поэтому я вручную захожу на веб-сайт и вставляю созданный мной Cook ie в свой код. Мне нужно сделать запрос GET, и приведенный ниже код работает, но он сообщает мне, что мне нужно включить javascript, чтобы продолжить работу с веб-сайтом.

def getRequest():

    value1 = "100"
    value2 = "80"
    value3 = "90000"

    header={
    "Accept" : "*/*",
    "accept-encoding" : "identity",
    "accept-language" : "en-US,en;q=0.9",
    "cookie" : -valid cookie I insert-,
    "user-agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
    }

    response = requests.get('https://website.com/includes/ajax/user/hub.php?type=start&value1='+value1+'&value2='+value2+'&value3='+value3,headers=header)
    print(response.content)

Затем я перешел на селен, но я не могу автоматизировать завершение рекапчи при входе в систему, поэтому я попытался проверить, могу ли я использовать действительный созданный мною cook ie и просто запросить страницу.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

def main():

    chrome_options = Options()
    chrome_options.add_experimental_option("detach", True)
    driver = webdriver.Chrome(executable_path='C:/Users/Admin/Desktop/chromedriver.exe')
#this would be a cookie a generated manually
    cookie={'__cfduid':'x','PHPSESSID':'x', '_ga':'x','_gid':'x','__tawkuuid':'x','cf_clearance':'x','OMITCDN':'x','username':'x'}
    driver.add_cookie(cookie)
    driver.get("https://website.com/hub.php")

I никогда по-настоящему не использовал селен, но когда я запустил скрипт, я получил эти ошибки.

[15636:14760:0508/022258.035:ERROR:browser_switcher_service.cc(238)] XXX Init()
Traceback (most recent call last):
  File "sele.py", line 33, in <module>
    main()
  File "sele.py", line 16, in main
    driver.add_cookie(cookie)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 894, in add_cookie
    self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: missing 'name'

Я не знаю, правильно ли я добавил повар ie, но даже если бы он был правильно ли веб-сайт аутентифицирует браузер и разрешает ему посещать страницу? Или есть способ объединить запросы с селеном, чтобы упростить процесс добавления действующего Cook ie и включения javascript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...