首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用网页爬虫/网络刮板从网站上获取cookie (PHP / cURL)

使用网页爬虫/网络刮板从网站上获取cookie (PHP / cURL)
EN

Stack Overflow用户
提问于 2018-12-18 16:56:04
回答 1查看 1.1K关注 0票数 2

我正在寻找一种方法,从一个网站获得饼干使用一个网络爬虫。我已经调查过这种情况,但我找不到合适的图书馆/方法来解决我的问题。我并不是想从浏览器中获取cookie,而是试图从网站(任何网站)中获得它们。

我希望有人能给我提供正确的解决方案/库!提前谢谢你!

你好,迈克

编辑:我知道关于这个爬虫库也有类似的文章。但这个帖子已经过时了,是2011年的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 18:25:45

您可以使用以下脚本使用php-curl获得cookie:

代码语言:javascript
复制
<?php    

// The url to visit
$url = "https://www.google.com";

// Where to read cookies from and where to write them
$cookiesFile = "cookies.txt";

// Setup
$handle = curl_init();

curl_setopt( $handle, CURLOPT_URL,              $url );
curl_setopt( $handle, CURLOPT_RETURNTRANSFER,   true );
curl_setopt( $handle, CURLOPT_FOLLOWLOCATION,   true );

// Send cookies upon request and update them as per response
curl_setopt( $handle, CURLOPT_COOKIEFILE,       $cookiesFile );
curl_setopt( $handle, CURLOPT_COOKIEJAR,        $cookiesFile );

// Send request, get response
$response = curl_exec( $handle );

// Done with curl
curl_close( $handle );

你在cookies.txt文件里看到的是.

代码语言:javascript
复制
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.google.com TRUE    /   FALSE   1547833930  1P_JAR  2018-12-19-17
#HttpOnly_.google.com   TRUE    /   FALSE   1561053130  NID 150=OF8rpPblfIZCnga6aoN_Zo6_H9nv87Th7ggQZDijf76GJ11ZDkWXmQXEQ9cUOBC3z7vY_Ea0-NtGcK5wi8Qo3myU1nnNksfgTreuIHJRiI0-pEqN9v4H7YGafp6r0RFHFueUbJ9IWo3Bu83Sh3akVW6bXzY2I-rJvaIIGoW9Fdg

Cookie以名为Netscape HTTP文件的特定格式存储,您可以查看this question and related answers获取更多详细信息。

在使用上述代码进行后续请求时,之前收到的cookie将从cookie文件中读取并与请求一起发送。当接收到响应时,如果cookie被更新,那么文件也会被更新。

这一点很重要,因为当您使用php-curl访问同一网站的更多页面时,cookie存储将保持一致。作为会话cookie的一个例子。

上面的代码存储在$response中访问的页面的HTTP。

请注意,如果您只需要访问几个页面并获得cookie,这是一项简单的工作,只需使用开头所示的代码即可完成。

如果您需要发送数据,就像用户编译和提交表单时一样,即使发出POST请求也可以很容易地调整。

如果你需要刮一个完整的网站,事情可能不是那么琐碎。

最后,考虑到cookies可能由JavaScript代码设置。

如果您需要访问一个交互式/JavaScript丰富的站点并模拟用户交互,然后检查cookies,php-curl不适合这样做。您需要编写无头浏览器的脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53837758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档