php禁止网页抓取(我另外一个博客中有一个 )

优采云 发布时间: 2022-03-16 12:25

  php禁止网页抓取(我另外一个博客中有一个

)

  在我的另一个博客中,有一个我自己写的爬取其他网页的源代码。调试的时候没有问题,发布后一段时间内容也没有问题,但是突然发现爬取功能不起作用。现在,右键查看源文件,看到获取的数据是空的。

  我重新检查了我的源代码并在服务器上调试了几次,甚至重新抓包查看对方的数据网站。

  一开始以为是自己的服务器IP被对方服务器屏蔽了,于是把源码发给另外一个朋友调试,发现不是这个原因。

  然后我怀疑对方是否更新了算法并加密了程序,但是我在获取数据的模块变量的源代码中做了回显输出,这才知道获取到的数据是乱码。

  

  第一次看到乱码的时候,还以为是其他开发者加密了数据,所以放弃了几天。

  今天尝试在源码中转换获取到的数据的字符集,但是怎么转换都出现乱码。

  找了一天,终于找到了一个C#程序员写的idea。

  原来问题出在我的 Post 的 header data header 中。我在源代码中添加了一行“Accept-Encoding: gzip, deflate, br”。删除后问题解决了,因为是gzip压缩导致的乱码。

  $cars = $GLOBALS['ua'];

$header = array(

"POST {$ii} HTTP/2.0",

"Host: {$web} ",

"filename: {$id} ",

"Referer: {$ii} ",

"Content-Type: text/html",

'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5,application/signed-exchange;v=b3',

'Accept-Encoding:gzip, deflate, br',

'Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',

'Connection:keep-alive',

"Cookie: {$cars[1]}",

"User-Agent: {$cars[0]}",

"X-FORWARDED-FOR:180.149.134.142",

"CLIENT-IP:180.149.134.142",

);

echo "header: {$header[0]}

{$header[1]}

{$header[2]}

{$header[3]}

{$header[4]}

{$header[5]}

{$header[6]}

{$header[7]}

{$header[8]}

{$header[9]}

{$header[10]}

{$header[11]}

{$header[12]}

{$header[13]}

";

return $header;

  删除以下行解决了问题。

  'Accept-Encoding:gzip, deflate, br',

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线