Запросы Python/urllib не возвращают статус 200 во время производстваPython

Программы на Python
Anonymous
Запросы Python/urllib не возвращают статус 200 во время производства

Сообщение Anonymous »

Я изо всех сил пытаюсь запросить эти изображения ниже:
Изображение 1: 'https://venda-imoveis.caixa.gov.br/foto ... 273521.jpg'
Изображение 2: «https://venda-imoveis.caixa.gov.br/foto ... 212121.jpg»
  • Я проверил это кодируется с другими веб-сайтами и работает нормально, проблема только с этим конкретным веб-сайтом «https://venda-imoveis.caixa.gov.br/».

    < li>Локальное тестирование кода для веб-сайта выше: он работает нормально, однако при развертывании в Heroku он не работает, а в журнале Heroku возникает ошибка HTTP: 403 – запрещено.
  • У меня есть семенники с использованием библиотеки SSL-проверки и без нее оба метода не работают.
  • Я также пытался использовать библиотеку запросов вместо urllib.
Есть идеи, почему это работает локально, а не в производстве ? Как обойти блокировку? Я думаю, диапазон IP-адресов Heorku заблокирован этим веб-сайтом. Если да, то есть способ обойти это?
@app.route('/teste', методы=['GET' , 'POST'])
def teste():
import ssl
# Определите заголовки, как указано
headers = {
'Accept-Encoding': 'gzip , сдуть, br',
'Хост': 'venda-imoveis.caixa.gov.br',
'Принять': '/',
' User-Agent': 'Mozilla/5.0 (совместимо; filibot/1.0; +https://filibot.com/)',
'X-Request-Id': 'httpdev.b2e27aba-d204-417a-95fa -d8a9dadb88f5',
'Referer': 'https://http.app/'
}

Код: Выделить всё

# Create a request object with the headers
url = 'https://venda-imoveis.caixa.gov.br/fotos/F000001001212121.jpg'
req = urllib.request.Request(url, headers=headers)

# Create an SSL context to disable SSL verification (for debugging purposes)
context = ssl._create_unverified_context()
status = 0

# Open the URL with the custom request and SSL context
try:
with urllib.request.urlopen(req, context=context) as response:
# Print the response status code
print('Response Status Code:', response.getcode())
status = response.getcode()
# Get the response headers
response_headers = response.getheaders()
for header in response_headers:
print(f'{header[0]}: {header[1]}')

# Read and print a portion of the content
content = response.read()
print('Content Length:', len(content))

except urllib.error.HTTPError as e:
print(f"HTTP error: {e.code} - {e.reason}")

except urllib.error.URLError as e:
print(f"URL error: {e.reason}")

except Exception as e:
print(f"An error occurred: {e}")

status = str(status)
return status
  • Я тестировал этот код на других веб-сайтах, и он работает нормально, проблема только с этим конкретным веб-сайтом https://venda-imoveis. caixa.gov.br/'.
  • Проверяя код локально для веб-сайта выше, он работает нормально, однако при развертывании в Heroku происходит не работает и в журнале Heroku ошибка HTTP: 403 — запрещено.
  • У меня есть тесты с использованием библиотеки SSL-проверки и без нее, оба метода не работает.
Моя цель — получить код состояния ответа: 200 в производстве.

Подробнее здесь: https://stackoverflow.com/questions/786 ... production

Вернуться в «Python»