ViewExpiredException при отправке запроса POST с помощью BeautifulSoup - PullRequest
0 голосов
/ 06 мая 2020

Отправка запроса POST обычно дает такую ​​ошибку:

<partial-response id="j_id1">
 <error>
  <error-name>
   class javax.faces.application.ViewExpiredException
  </error-name>
  <error-message>
   <![CDATA[viewId:/user/searchstatus.xhtml - View /user/searchstatus.xhtml could not be restored.]]>
  </error-message>
 </error>
</partial-response>

Я просто делаю, что этот сайт использует капчу для получения информации о транспортном средстве. Итак, сначала я решаю эту капчу, а затем получаю данные. Большую часть времени отображается ошибка, указанная выше. Только несколько раз получаю результат, а иногда происходит несоответствие капчи. Пробовал управлять кешем как без кеша, если кеш вызывает проблему, но все равно. Вот код





app_url = 'https://vahan.nic.in/nrservices/faces/user/searchstatus.xhtml'





button = soup.find("button",{"type": "submit"})


encodedViewState = viewstate.replace("/", "%2F").replace("+", "%2B").replace("=", "%3D")


headers = {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Accept': 'application/xml, text/xml, */*; q=0.01',
    'Accept-Language': 'en-us',
    'Accept-Encoding': 'gzip, deflate, br',
    'Host': 'vahan.nic.in',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15',
    'Cookie': 'JSESSIONID=%s; SERVERID_7081=vahanapi_7081; SERVERID_7082=nrservice_7082' % cookies['JSESSIONID'],
    'X-Requested-With':'XMLHttpRequest',
    'Faces-Request':'partial/ajax',
    'Origin':'https://vahan.nic.in',
    'Referer':'https://vahan.nic.in/nrservices/faces/user/searchstatus.xhtml',
    'Connection':'keep-alive'

}

viewstate = soup.select('input[name="javax.faces.ViewState"]')[0]['value']
data = {
    'javax.faces.partial.ajax':'true',
    'javax.faces.source': button['id'],
    'javax.faces.partial.execute':'@all',
    'javax.faces.partial.render': 'rcDetailsPanel resultPanel userMessages capatcha txt_ALPHA_NUMERIC',
    button['id']:button['id'],
    'masterLayout':'masterLayout',
    'regn_no1_exact': 'pb35n4655',
    'txt_ALPHA_NUMERIC': ans,
    'javax.faces.ViewState': viewstate,
    'j_idt42':''
}


postResponse = requests.post(url=app_url, data=data,headers=headers, cookies=cookies )


rsoup = BeautifulSoup(postResponse.text, 'html.parser')

print(rsoup.prettify())




    ```


...