php网页抓取乱码(php网页抓取乱码问题解决方法技术限制,内测pep2056)

优采云 发布时间: 2022-04-09 13:04

  php网页抓取乱码(php网页抓取乱码问题解决方法技术限制,内测pep2056)

  php网页抓取乱码问题解决方法技术限制,对于一些新标准没有及时更新,例如php5,php7开始就有了pep2052,现在正在内测pep2056。官方文档讲的是使用cookie实现的网页抓取,使用客户端脚本包进行操作cookie存储目标网页的locale(php中,可以为none,也可以为php_parse_cookie,实际上cookie还有很多,包括php_base64等等),当网页抓取完成之后,使用nginx完成forward,从cookie中读取locale值,返回给网页抓取者。

  网页抓取过程中,由于客户端脚本在客户端执行,客户端当前所能接收到的cookie为当前的php网页版本和cookienamecookiename也可以为php_url_locale。在抓取过程中如果发生cookie值传递错误,可以通过指定cookiename的方式进行传递。项目原理,由于目前phpsdk依然未实现对php_parse_cookie的支持,我们只能通过extensionname的方式进行抓取,如果客户端不支持,只能使用chromesafari开发者工具抓取。

  项目源码可以从公众号下载:-2csr3joaucsbrd6wdg提取码:lpr9php网页抓取乱码问题解决方法php中使用了cookie存储目标网页的locale信息。假如一个网页已经包含locale属性,则服务器对于该locale的读取逻辑是这样的:首先获取目标网页所有的locale的值,我们简称为extended,将extended存入extended_cookie_blocked_tags中,即表示这个网页加载时这个extended的内容是被存储在这个blocked_tag中的。

  为了去除这些内容,我们需要把extended_cookie_blocked_tags取出来,作为cookie解析的输入,其中extended_cookie_blocked_tags是写入在php内置数据结构中,即{"extended":"false","cookie_length":null,"cache_write_first":null,"cls_check":true,"flags":[]}。

  解析nginx进程返回的locale值,并且更新extended_cookie_blocked_tags中的locale值。这些需要通过上面提到的脚本来执行。相对于c\c++\java等编程语言,php的php_parse_cookie可以很好地处理这些问题。php内置数据结构有多种实现,这里我们使用自定义的flags数组的方式。

  整个流程如下:整体思路的思维导图php优点php优点是解决了以下2个问题:一个cookie要存到locale中。二是cookie可以有多份。如果一个cookie被多次请求,可以提高代码可扩展性,但也需要对locale层设计有所约束。简单地说,php对于你选择不对请求作出任何更改。再往深一点,如果你执行ajax请求时有多次加载要继续加载token值是一个常见的需求。也就。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线