【问题标题】:How to automatically update cookies如何自动更新cookies
【发布时间】:2021-04-10 13:08:42
【问题描述】:

我不是以英语为母语的人,如果我说的话让您感到困惑,我很抱歉。谢谢。

我最近在一个网站上爬东西。正常的操作步骤应该是这样的:

  1. 我登录到这个网站
  2. 我跳转到子页面
  3. 我点击一个按钮(其实是执行一个JS函数)
  4. 网站返回一些东西

但这很不方便,因为我总是需要打开浏览器才能完成这些步骤。于是我在F12中找到了step3的XHR,并将其复制到curl命令中循环遍历。 这比以前简单多了,但我仍然需要使用浏览器登录并复制最新的 cookie 以更新我的 curl 命令。

假设 Step1 和 Step3 实际上是 XHR,我知道 args 的含义。 我的问题是,如何在不使用浏览器的情况下获取最新的 cookie,我的意思是,一个真正的浏览器软件(我认为这是唯一需要解决的问题)?或者还有什么我不知道需要做的事情吗?

【问题讨论】:

  • Cookie 存储在浏览器中。因此,尚不清楚如何在没有浏览器的情况下获取 cookie。除非您想通过休息客户端完成所有步骤,生成 Web 请求,然后从标头中获取 cookie。
  • 我可以通过模拟浏览器的行为来做到这一点,例如使用一些Python包。我的意思是,我真的不能打开我电脑的浏览器软件吗?
  • 任何可以生成网络请求的非浏览器语言都可以模仿浏览器并从响应中获取标题。
  • 其实我对cookies了解不多。当我尝试使用 curl 时,有一件事让我感到困惑。当我将登录的XHR复制到curl时,我注意到复制的命令中有一个cookie。这是来自旧访问的 cookie 吗?如果我模拟一个网络请求,我什么时候会得到 cookie?对不起,我问了一个非常基本的问题
  • 如果您要发送 cookie,则表示您已经拥有它。响应还可以在响应标头中包含新的 cookie。我鼓励您对 http 请求和响应的格式进行一些研究。特别是它们的标头结构,这是传输 cookie 的位置。

标签: javascript session-cookies


【解决方案1】:

典型的登录由发送到服务器的post-request 组成。有效负载通常包含纯文本的用户名和密码,就像从html-form 发送的一样。然后,来自服务器的答案在其标头中包含会话cookie(有时称为PHPSESSID 或类似名称)。

然后可以使用会话 cookie 来发出更多请求。

有时会话cookie在您登录之前已经设置,但只有在登录时才会激活。通常您每次连接时都会获得一个新的会话cookie。

一些网站部署了像 google-nocaptcha-recaptcha 这样的技术,可以完全阻止机器人登录,你知道的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多