Передача имени пользователя и пароля с помощью urllib3 в python - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь получить ответ html со следующей страницы

https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101/

Когда я открываю этот URL в chrome, у меня есть чтобы ввести имя пользователя и пароль для учетной записи, которую я имею с сайтом

Я хочу передать это имя пользователя и пароль с помощью urllib3 в python, мой текущий код

import urllib3

url = 'https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101/'
username = ''
password = ''
data = {'Username': username, 'Password': password}

http = urllib3.PoolManager()
r = http.request('POST', url, data)
print(r.status)

print(r.data)

Однако при выполнении этого по-прежнему дает ответ на странице входа в систему

Я не уверен, нужно ли мне использовать куки или как выяснить, в каком формате имя пользователя и пароль должны быть переданы в URL для успешного входа в систему и принятия на указанный URL

1 Ответ

0 голосов
/ 28 февраля 2020

Это будет трудно сделать с помощью чистого запроса POST, по крайней мере, для меня. Для такого проекта я бы использовал Selenium

pip install selenium

Загрузите драйвер Chrome отсюда: https://sites.google.com/a/chromium.org/chromedriver/downloads

Из загруженных файлов скопируйте chromedriver.exe файл в приложение root.

А вот код для входа в систему https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101/

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#create an instance of webdriver
driver = webdriver.Chrome()

#navigate to URL
driver.get("https://ghrc.nsstc.nasa.gov/pub/lis/iss/data/science/nqc/nc/2020/0101")

# username and password variable
username = 'my_username'
password = 'my_password'

#get the username and password fields by id and fill them
input_user = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'username')))
input_user.send_keys(username)
input_pwd = driver.find_element_by_id('password')
input_pwd.send_keys(password)
#click the login button
btn = driver.find_element_by_xpath('//input[@type="submit"]')
btn.click()
...