Я пытаюсь проверить сайт ASP.NET с запросами.Первый шаг - вход в систему, все в порядке, после входа в систему мне нужно сохранить сеанс для получения данных со страниц.
Я получаю файлы cookie сquestions.cookies.RequestsCookieJar (), на других сайтах этот код работает, но на этом сайте, разработанном в ASP.NET, не работает.Я исследовал и обнаружил __VIEWSTATE и другие параметры, но не могу его получить.
#!/usr/bin/env python3
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
import urllib3
urllib3.disable_warnings()
from time import sleep
class getData():
def __init__(self, url):
self.url = url
self.session = requests.Session()
def getSelectorRecaptcha(self):
page = requests.get(self.url, verify=False)
soup = BeautifulSoup(page.text, 'html.parser')
recaptcha = soup.find(class_='g-recaptcha')
value = recaptcha.attrs
return(value['data-sitekey'])
def solveRecaptcha(self, API_KEY):
site_key = self.getSelectorRecaptcha()
captcha_id = self.session.post("http://2captcha.com/in.php?key={}&method=userrecaptcha&googlekey={}&pageurl={}".format(API_KEY, site_key, self.url)).text.split('|')[1]
recaptcha_answer = self.session.get("http://2captcha.com/res.php?key={}&action=get&id={}".format(API_KEY, captcha_id)).text
while 'CAPCHA_NOT_READY' in recaptcha_answer:
sleep(5)
recaptcha_answer = self.session.get("http://2captcha.com/res.php?key={}&action=get&id={}".format(API_KEY, captcha_id)).text
if(recaptcha_answer == 'ERROR_WRONG_CAPTCHA_ID'):
badreport = self.session.post("https://2captcha.com/res.php?key={}&action=reportbad&id={}".format(API_KEY, captcha_id)).text
if (recaptcha_answer != 'ERROR_WRONG_CAPTCHA_ID'):
recaptcha_answer = recaptcha_answer.split('|')[1]
payload = {
'key': site_key,
'g-recaptcha-response': recaptcha_answer
}
response = self.session.post(self.url, payload, verify=False)
def doLogin(self):
login_data = {'login':'xxxxxxxx', 'password':'xxxxxxx'}
self.solveRecaptcha('xxxxxxxxxxxxxxxxxxxxxxxxxxxx')
response = self.session.post(self.url, login_data, verify=False) #login
soup = BeautifulSoup(response.content, 'html.parser')
print(soup.select_one('__VIEWSTATE'))
print(soup.select_one('__VIEWSTATEGENERATOR'))
print(soup.select_one('__EVENTARGUMENT'))
print(soup.select_one('__EVENTVALIDATION'))
#get cookies
jar = requests.cookies.RequestsCookieJar()
c = self.session.cookies.get_dict()
for i in self.session.cookies.get_dict():
jar.set(i, c[i])
self.session.cookies = jar
page = self.session.get('private url', verify=False)
soup = BeautifulSoup(page.text, 'html.parser')
print(page.status_code)
print(soup.find(id='some id'))
def main():
obj = getData('private url')
obj.doLogin()
if __name__ == "__main__":
main()
Эта проблема также возникает в https://www.dell.com/, Я не могу передать URL, но ятестирование на сайте Dell.Я ожидаю получить данные после входа в систему.Пожалуйста, кто-нибудь может мне помочь?