PHP 爬虫:怎样拿到浏览器的 cookie?

2017-10-29 11:13:29 +08:00
 ericgui
我们用 PHP 写爬虫,需要在 guzzle 的 request options 里的 header 里,加上 cookie
现在都是手动,就是先用浏览器点开网站,F12,复制 cookie,粘贴到代码里,
这很傻逼,一方面 cookie 过一段会失效,二方面,始终无法自动获取到 cookie

Python 的 requests 包就可以,但显然我还是希望用 php 解决问题。

尝试过各种方式,均失败。

各位有什么好的建议么?

还有一个疑惑,这属于 HTTP 协议学得不好,也来请教一下:

如果首次访问网站,仍然会有 cookie,而且 cookie 里包含有 sessionID,这就很邪门,
如果要爬取的网页不是首次访问网站, 这个可以理解,因为你已经和网站建立连接了,当然会有 sessionID。
但首次访问网站,仍然会有 sessionID 包含在 cookie 里,实在理解不能,这 sessionID 哪里来的? TCP 三次握手的时候 server 发送的?

请高人赐教。
8847 次点击
所在节点    PHP
15 条回复
lifeintools
2017-10-29 11:19:03 +08:00
使用自动化工具,获取 cookie.那些浏览器测试用的框架。可以考虑下。selenium
lhx2008
2017-10-29 11:27:10 +08:00
在 php 里面模拟登录,就可以拿到 cookies 了,如果要半自动就在 php 里面执行 python 的 selenium 弹浏览器拿 cookies 再返回给 php
第一次访问没 cookies,访问后网站会给你一个 cookies,里面有 seeson id
jugelizi
2017-10-29 11:31:04 +08:00
你都会 F12 了把浏览器清空看 header 的 set-cookie
还有 curl 是可以拿到 cookie 的
ericgui
2017-10-29 12:04:45 +08:00
@lifeintools facebook webdriver 难用的一逼
AchillesNeo
2017-10-29 12:07:02 +08:00
### 服务端测试结果

UserSystem_BasicDataService_TestCase_20160415110013 测试完成,共 7 个测试用例,成功 6 个,失败 1 个。
gouchaoer
2017-10-29 12:10:35 +08:00
Facebook webdriver 写的很好啊,拿来驱动 selenium 毫无问题,至于自动管理 cookie 的话 guzzle 应该会解析 header 里的 cookie 更新 httpclient 缓存的吧
wdlth
2017-10-29 12:13:05 +08:00
guzzle 不是有 CookieJar 么?可以保存 Cookie,再利用的。
allenhu
2017-10-29 15:21:16 +08:00
不知道 cookiejar 吗?
skyjerry
2017-10-29 16:45:03 +08:00
sessionid 为什么会想到 tcp 三次握手?请求服务器的资源,服务器返回给你的东西带着 session 很奇怪吗?
jq8778
2017-10-29 17:27:27 +08:00
COOKIE 植入一般有两种
一种是 HTTP 服务端返回 SET COOKIE,这种很好读
还有一种是用 JS 来植入
这种就要分析对应代码了...
to2false
2017-10-30 09:29:33 +08:00
@skyjerry 感觉他需要先补充下基本知识
8355
2017-10-30 09:49:16 +08:00
只用这个保存到文件就可以了啊.... 楼上讨论那么多在说啥...
curl 可以保存 cookie 的

http://php.net/manual/zh/function.curl-setopt.php
CURLOPT_COOKIEJAR
mingyun
2017-11-05 20:46:59 +08:00
@8355
picone
2017-11-06 16:22:28 +08:00
如果用 curl 提取的话,可以获取返回的 header,正则提取出你需要的 cookie。
如果只是一个用户的话可以用 CURLOPT_COOKIEJAR,不过这个玩意要读文件,不方便存数据库里面,而且无用的 cookie 可能很多。
wk110
2017-11-10 19:48:46 +08:00
学习到了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/401631

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX