使用 CSRF 令牌抓取请求页面

时间:2021-03-22 16:39:51

标签: python web-scraping python-requests

我正在尝试从这个 booking website 中抓取结果。在 POST request 中,除了行程代码和日期之外,还有 _csrf 参数,我假设它是 CSRF token。 我试图获取会话 cookie 并提取 this answer 后面的 CSRF token,但我返回的 cookie 没有 CSRF token

<RequestsCookieJar[<Cookie JSESSIONID=W33kBCH5zFsyVhTyQL9L4Ibyq-KLGTBSD4h_IUNA.aru-270545 for www.booking.alilaurogruson.it/booking>]>

def get_session_cookie():
    url = 'https://www.booking.alilaurogruson.it/booking/welcome/home'
    s = requests.Session()
    s.get(url, verify=False)
    print(s.cookies)
    if 'csrftoken' in s.cookies:
        # Django 1.6 and up
        csrftoken = s.cookies['csrftoken']
    else:
        # older versions
        csrftoken = s.cookies['csrf']
    return csrftoken

如何成功抓取搜索结果?

1 个答案:

答案 0 :(得分:0)

_csrf 在该页面上作为表单参数提供,您必须使用 BeautifulSoup 之类的内容进行解析。

<input type="hidden" name="_csrf" value="666363ca-ffff-ffff-ffff-41a61e158e0f" />