PHP Goutte爬虫框架 设置Cookie 绕过验证界面

注意:利用爬虫获取网站信息只是为了减少人工复制信息带来的工作量,本帖仅用于技术交流

Goutte 的github链接
https://github.com/FriendsOfPHP/Goutte

goutte其实挺简单的,就是新建client,request,然后通过filter获取html中的标签数组

问题和思路
但是今天遇到一个问题是,在请求一个网站时,会跳转到一个页面,要求同意cookie存储,如果不跳过这个页面就无法获取到真实信息,很明显只要在请求中加上cookie就可以绕过此页面,但是无奈找不到goutte的技术文档,起初是想通过goutte的链接点击模拟同意操作,但是该网站通过button做的跳转,我不想去动goutte的源码了,就放弃了这个想法

解决方法:
然后在网上找goutte设置cookie的方法,但是好像都是同一篇文章,利用GuzzleHttp去设置cookie,不知道是因为版本还是什么原因goutte根本找不到setClient的地方,无奈只能去读goutte的源码,我也不知道是我水平有限,没有发现更简洁的入口还是怎么滴,最终只找到一个复杂的方法如下:

$url = 'http://你的请求链接';

//初始化cookie
$cookie = \Symfony\Component\BrowserKit\Cookie::fromString('从网页复制Cookie字符串到此处');
//初始化cookiejar
$cookiejar = new \Symfony\Component\BrowserKit\CookieJar();
//将cookie设置到cookiejar中
$cookiejar->set($cookie);
//初始化client时加入cookiejar
$client = new GoutteClient(null,null,$cookiejar);
$response = $client->request('GET',$url);

通过此方法我成功的绕过了同意cookie的界面,同理,其他需要登录验证的页面也可以这么操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值