【问题标题】:Get cookies from website with requests in python使用 python 中的请求从网站获取 cookie
【发布时间】:2020-05-31 14:58:23
【问题描述】:

我尝试使用 python 从网站获取所有 cookie(包括由 javascript 设置的 cookie)。目前我尝试使用 requests 模块。

http cookie 不是问题。我可以抓住他们:

response = requests.get("http://example.com")
http_cookies = response.cookies

由 javascript 设置的 cookie 有点棘手。 我使用正则表达式搜索网站上所有<script ..>...</script> 标签和集成javascripts 源<script ... src="..."> 的内容。

现在我有一个包含页面上所有 javascript 的字符串的大列表。我相信所有由 javascript 设置的 cookie 都有document.cookie = "..."; 的形式。对吗?

我认为我可以使用 javascript 代码在我的列表中搜索子字符串,例如带有正则表达式的 document.cookie = "...";

我是对的吗?我只对 cookie 名称感兴趣。例如,_ga 用于 Google Analytics。

感谢您的帮助!

【问题讨论】:

  • "我相信所有通过 javascript 设置的 cookie 的格式都是document.cookie = "...";。是吗?"不必要。您将不得不真正执行 JavaScript 才能可靠地做到这一点,而requests 不能做到这一点。
  • 这能回答你的问题吗? Web-scraping JavaScript page with Python
  • 并非如此。我过去曾尝试过使用 selenium,但使用 selenium 必须使用代理并使用此代理分析 http 标头以捕获所有 cookie。这是非常嵌套的,大型网站需要很多时间。并且很难用这种方法并行扫描网站。这就是为什么我正在寻找一种更简单的方法来做到这一点。如果我的想法行不通,有没有办法在我浏览整个网站并阅读 document.cookie 以使用 python 获取 cookie 名称后执行我保存的 javascript?

标签: javascript python cookies python-requests


【解决方案1】:

正如 Chris 所说,无法使用该正则表达式搜索 cookie,因为 cookie 可以通过多种方式设置,而不仅限于 document.cookie

我建议使用模拟浏览器的 Selenium,您可以通过以下方式获取 cookie:

import pickle
import selenium.webdriver 

driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多