【问题标题】:Bypassing intrusive cookie statement with requests library使用请求库绕过侵入性 cookie 语句
【发布时间】:2016-08-31 19:41:36
【问题描述】:

我正在尝试使用 requests 库来抓取网站。但是,我尝试访问的特定网站 (http://www.vi.nl/matchcenter/vandaag.shtml) 有一个非常侵入性的 cookie 声明。

我正在尝试按如下方式访问该网站:

from bs4 import BeautifulSoup as soup
import requests
website = r"http://www.vi.nl/matchcenter/vandaag.shtml"
html = requests.get(website, headers={"User-Agent": "Mozilla/5.0"})
htmlsoup = soup(html.text, "html.parser")

这将返回一个网页,该网页仅包含 cookie 语句和一个接受的大按钮。如果您尝试在浏览器中访问此页面,您会发现按下按钮会将您重定向到请求的页面。如何使用requests 做到这一点?

我考虑过使用mechanize.Browser,但这似乎是一种相当迂回的做法。

【问题讨论】:

    标签: python cookies beautifulsoup python-requests


    【解决方案1】:

    尝试设置:

    cookies = dict(BCPermissionLevel='PERSONAL')
    html = requests.get(website, headers={"User-Agent": "Mozilla/5.0"}, cookies=cookies)
    

    这将绕过 cookie 同意页面,让您直接进入该页面。

    注意:您可以通过分析cookie concent页面上运行的javascript代码发现以上内容,有点混淆,但应该不难。如果您再次遇到相同类型的问题,请查看在事件处理集上执行的 javascript 代码使用哪种 cookie。

    【讨论】:

      【解决方案2】:

      我发现了this SO question,它询问如何使用请求在帖子中发送 cookie。接受的答案指出,最新版本的 Requests 将从简单的字典为您构建 CookieJars。以下是原始答案中包含的 POC 代码。

      import requests
      
      cookie = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}
      
      r = requests.post('http://wikipedia.org', cookies=cookie)
      

      【讨论】:

      • POC 或 OP 的网站?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 2010-09-24
      • 2015-08-26
      相关资源
      最近更新 更多