При отправке формы через requests.post не делает переадресацию на дргую старницу
Пишу парсер для сайта . Там есть капча которую вроде как возможно успешно решаю, потом пробую отправлять с помощю requests.post запрос с хедером куками ну формой status.code 200, якобы все отправил хорошо, но нету ответа.
Вот мой код
from bs4 import BeautifulSoup as bs
from urllib3.util import create_urllib3_context
from urllib3 import PoolManager
from requests.adapters import HTTPAdapter
from requests import Session
from PIL import Image
from io import BytesIO
from fake_useragent import UserAgent
import tempfile
from twocaptcha import TwoCaptcha
class AddedCipherAdapter(HTTPAdapter):
def init_poolmanager(self, connections, maxsize, block=False):
ctx = create_urllib3_context(ciphers=":HIGH:!DH:!aNULL")
self.poolmanager = PoolManager(
num_pools=connections,
maxsize=maxsize,
block=block,
ssl_context=ctx
)
def main():
ua = UserAgent()
base_url = 'https://portalsat.plataforma.sat.gob.mx'
url = 'https://portalsat.plataforma.sat.gob.mx/RecuperacionDeCertificados'
session = Session()
session.mount(base_url, AddedCipherAdapter())
response = session.get(url)
cookies = response.cookies
print(cookies)
if response.status_code == 200:
soup = bs(response.text, 'lxml')
img = soup.find_all('img')
hide_input = soup.find('input', {'type':'hidden' , 'name': 'javax.faces.ViewState'})
img = [i.get('src') for i in img if i.get('height') == '50']
response = session.get(f'{base_url}{img[0]}')
temp_file_path = tempfile.mktemp(suffix='.jpg')
image = Image.open(BytesIO(response.content))
image = image.convert('RGB')
image.save('TEST.jpg', 'JPEG')
image.save(temp_file_path, 'JPEG')
solver = TwoCaptcha('b881cd06fb0b03e34cd95e4bb7a6f55f')
result = solver.normal(temp_file_path, caseSensitive=1)
form_post = '/RecuperacionDeCertificados/faces/index.xhtml'
print(result)
data = {
'form': 'form',
'form: verTexto': result.get('code'),
'form: j_idt21': 'Aceptar',
'javax.faces.ViewState': hide_input.get('value'),
}
print(result.get('code'))
headers = {
'user-agent': ua.random,
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "en-US,en;q=0.9,uk-UA;q=0.8,uk;q=0.7,pl;q=0.6",
"cache-control": "max-age=0",
"content-type": "application/x-www-form-urlencoded",
"sec-ch-ua": "Not.A/Brand;v=8, Chromium;v=114, Google Chrome;v=114",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "Windows",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1"
}
response = session.post(f'{base_url}{form_post}', data=data, headers=headers,cookies=cookies)
if response.status_code == 200:
print('Форма успішно відправлена!')
print(response.history)
if 'Recuperación por RFC:' in response:
solver.report(result.get('captchaId'), True)
print("Відбулося перенаправлення")
# Отримання остаточного URL після перенаправлення
final_url = response.url
print("Остаточний URL:", final_url)
if '¡Ocurrió un error durante su solicitud!' in response:
print("Перенаправлення не відбулося")
final_url = response.url
print("Остаточний URL:", final_url)
solver.report(result.get('captchaId'), False)
else:
print('fail')
else:
print('Помилка при відправці форми.')
if __name__ == '__main__':
main()