Ответ [412] при использовании пакета запросов python для доступа к этой веб-странице, как обойти это? - PullRequest
1 голос
/ 09 января 2020

Это воспроизводимый код:

import requests
url = 'http://wjw.hubei.gov.cn/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
res = requests.get(url,headers=headers)
print(res)

Код print(res) дает следующий вывод:

<Response [412]>

Я могу нормально открыть веб-страницу на мой компьютер с Chrome.

Чего-то не хватает в шапке? Есть ли способ обойти ошибку 412? Заранее спасибо!

1 Ответ

2 голосов
/ 09 января 2020

Этот веб-сайт требует действительный Cookie, чтобы ответить вам.

Я пробовал несколько способов, таких как вызов основного веб-сайта и затем получение Cookie под requests.Session(), но веб-сайт не позволяет мне пройти.

Так что единственный способ, которым вы можете воспользоваться, как сейчас. Или использовать Selenium или передать действительный Cookie на requests

Вот как получить Cookie и User-Agent через браузер:

enter image description here

Используя следующий код:

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0",
    "Cookie": "Hm_lvt_5544783ae3e1427d6972d9e77268f25d=1578572654; Hm_lpvt_5544783ae3e1427d6972d9e77268f25d=1578572671; dataHide2=64fa0f2a-a6aa-43b4-adf0-ce901e8d1a37; FSSBBIl1UgzbN7N80S=sXE0qXcyGkTm4uVerLqfZyUU3XFMZzkm22k.eqVABLPe0eYMo3D8uX5ZJ07.7cCr; FSSBBIl1UgzbN7N80T=4aY.P74ZFvDef6i1BgsPAGpjsGOCcIHJFaOyshl4_fJ1WvTk1nqBkdG9PsyX3VRZcIuI8zdYiRJw4rEBQfx.Mv.GS_wT6Hzgiw.AY.UMP.Mw4iCKXGDzY1UeIH2gUd15impxzBVzZpN3MnSdqD0TUqcxSq0RrvIuE8RKT5pFLAqaNnVqtbeSACx43yIYtKJ41y8Isu6a6lNOlWNeaFJ8bx22pKm3lAIO.HIDhGSZqrUP76.q3i4Iux59f7dqJPuSRF90G1LSUBE8t8HrlWzBcSwJJJARX4Ioc0iHmHvdkVoigUitTRjLUHJM4ieOV1sLBDsq"
}

r = requests.get("http://wjw.hubei.gov.cn/", headers=headers)
print(r)

Выход:

<Response [200]>

enter image description here

Обновление:

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"}

with requests.Session() as req:
    r = req.get("http://www.hubei.gov.cn/")
    headers['Cookie'] = r.headers.get("Set-Cookie")
    for item in range(10):
        new = req.get("http://wjw.hubei.gov.cn/", headers=headers)
        print(new)

enter image description here

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