gpt4 book ai didi

javascript - 如何实现网站的cookies scraper?

转载 作者:行者123 更新时间:2023-12-03 07:42:07 27 4
gpt4 key购买 nike

我需要创建一个脚本来发出 HTTP 请求并模拟浏览器在 cookie 管理方面的行为。这意味着它可以访问该“页面”设置的所有 cookie(服务器设置 cookie、异步客户端设置 cookie、每个域的 cookie。)

我的意思是,使用控制台检查页面,我可以看到该页面上所有域的所有 cookie。

enter image description here

我正在想办法从我的代码中做到这一点。我几乎确定我必须以某种方式运行页面的 javascript 并模拟 DOM 行为(考虑在 node.js 脚本中使用 jsDom )。

但是,但是。还是有很多疑问。关于如何通过模拟浏览器行为拦截所有 cookie 有什么建议吗?

任何有关如何实现它的建议将不胜感激。

对于那些有时间的人
我对如何实现它有一个奇怪的想法:重载处理 HTTP 响应的 xhr 对象的函数原型(prototype)(我的意思是制作类似: this )来检查所有客户端加载的 cookie 是否有意义?
我需要它在任何页面上工作,即使是那些不使用 native XMLHttpRequest 对象的页面。对此有什么建议吗?

最佳答案

浏览器只是向服务器发送 HTTP 请求,您不一定需要加载 DOM。如果您可以对要发送的请求进行逆向工程,则可以轻松模拟网页或工作流程的行为。当您从 PHP 使用 cURL 发送请求时,您需要将 cookie 存储在 cookie jar 中,以便跨请求维护 cookie。像这样的事情应该让你开始:

function load($url, $postData = array())
{
$useragent = "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
curl_setopt($curl, CURLOPT_POST, !empty($postData));
if(!empty($postData)) curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
$page = curl_exec ($curl);
curl_close ($curl);

return $page;
}

如果你想运行一个在 cookie jar 中维护 cookie 的 headless 浏览器,我会推荐像 PhantomJS 这样的东西。然后,您可以加载页面并在页面上下文中执行代码:

"use strict";
var page = require('webpage').create();

page.onConsoleMessage = function(msg) {
console.log(msg);
};

page.open("http://phantomjs.org/", function(status) {
if (status === "success") {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
page.evaluate(function() {
console.log("$(\".explanation\").text() -> " + $(".explanation").text());
});
phantom.exit(0);
});
} else {
phantom.exit(1);
}
});

代码可以在Github上找到:https://github.com/ariya/phantomjs/blob/master/examples/phantomwebintro.js

关于javascript - 如何实现网站的cookies scraper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35367965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com