Факт погоды с rp5.ru

Добрый день! Возникла необходимость оперативно получать фактическое значение погоды за прошедший период. Выбор пал на ресурс rp5.ru. Если рассмотреть на примере Москвы, то для получения факта необходимо перейти по ссылке переход. Откроется страница, где на форме необходимо выбрать вкладку "Скачать архив погоды", задать в качестве параметров всякое и нажать на кнопку "Выбрать в файл GZ (архив)", далее появляется ссылка, по которой можно получить архив с погодой.Если посмотреть что отправляет браузер по нажатию на кнопку, то можно увидеть:general Request URL:https://rp5.ru/responses/reFileSynop.php Request Method:POST Status Code:200 OK Remote Address:37.200.66.114:443 Referrer Policy:origin response headers Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Connection:keep-alive Content-Encoding:gzip Content-Type:text/html; charset=UTF-8 Date:Tue, 17 Oct 2017 07:25:29 GMT Expires:Thu, 19 Nov 1981 08:52:00 GMT Pragma:no-cache Server:nginx/1.10.3 Set-Cookie:PHPSESSID=8bcq6bsimflj6iiuatjacsj5t6; path=/ Set-Cookie:lang=ru; expires=Thu, 16-Nov-2017 07:25:29 GMT; Max-Age=2592000; path=/ Set-Cookie:lang=ru; expires=Thu, 16-Nov-2017 07:25:29 GMT; Max-Age=2592000; path=/ Transfer-Encoding:chunked X-Powered-By:PHP/5.6.30 request headers Accept:text/html, */*; q=0.01 Accept-Encoding:gzip, deflate, br Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Content-Length:110 Content-Type:application/x-www-form-urlencoded Host:rp5.ru Origin:https://rp5.ru Referer:https://rp5.ru/ User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 X-Requested-With:XMLHttpRequest form data wmo_id:27612 a_date1:17.10.2017 a_date2:17.10.2017 f_ed3:10 f_ed4:10 f_ed5:17 f_pe:1 f_pe1:1 lng_id:2 type:xlsНа основе показанного выше пытаюсь на python сделать то же самое
myUrl = "https://rp5.ru//responses/"
        myHeader = {}
        myHeader["Accept"] = "text/html, */*; q=0.01"
        myHeader["Accept-Encoding"] = "gzip, deflate, br"
        myHeader["Accept-Language"] = "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
        myHeader["Connection"] = "keep-alive"
        myHeader["Content-Length"] = "110"
        myHeader["Content-Type"] = "application/x-www-form-urlencoded"
        myHeader["Host"] = "rp5.ru"
        myHeader["Origin"] = "https://rp5.ru"
        myHeader["Referer"] = "https://rp5.ru/"
        myHeader["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
        myHeader["X-Requested-With"] = "With:XMLHttpRequest.php"
        myData = {'wmo_id':'27612','a_date1':'01.10.2017','a_date2':'17.10.2017','f_ed3':'10','f_ed4':'10','f_ed5':'17','f_pe':'1','f_pe1':'1','lng_id':'2','type':'xls'}
        response = requests.post(myUrl, json=myData, headers=myHeader)
        print(response.text)
в качестве ответа получаю:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<TITLE>В доступе отказано. Forbidden.</TITLE>
<LINK href="/mainStyle.css" type=text/css rel=stylesheet>
</head>
<body>
<table cellpadding=0 cellspacing=0 width=100% height="80%" align="center" border=0>
    <tr>
        <td>
            <table cellpadding=0 cellspacing=0 width=60% height="10%" align="center" border=0 id=header>
                <tr>
                    <td class=PR10>
                        <img src='/images/ru/logo.png'>
                    </td>
                    <td width=100% class=PR10 height=80% id=navigator style="color:white">
                                               <p>В доступе отказано. Forbidden.</p>
                                               <p>Приносим искренние извинения!</p>
                                               <p>Команда RP5.</p>
                                        </td>
                </tr>
            </table>
        </td>
    </tr>  
</table>
</body>
</html>
Скажите, пожалуйста, почему в браузере запрос проходит, а на python - нет. И что мне нужно сделать, чтобы это исправить? Спасибо!
2 ответа

Вы адрес смотрели, куда браузер запрос шлет? https://rp5.ru/responses/reFileSynop.php А вы куда шлете? И заголовки правильно пишите: не
myHeader["X-Requested-With"] = "With:XMLHttpRequest.php"
а
myHeader["X-Requested-With"] = "XMLHttpRequest"
И почему в Post кладете данные формы в параметр json, а не data?


Garry Galler, Спасибо большое, все работает. Ошибки глупые, нужно больше спать =)