php抓取微信图片,PHP使用CURL采集微信图片(公众号)如何绕过防盗链系统?

《PHP使用CURL采集微信图片(公众号)如何绕过防盗链系统?》要点:

本文介绍了PHP使用CURL采集微信图片(公众号)如何绕过防盗链系统?,希望对您有用。如果有疑问,可以联系我们。

相关主题:PHP开发

使用PHP的CURL函数采集过微信公众号的文章时,都会遇到图片不能正常显示,这是因为遇到了微信的防盗链系统。

网上有文章 说什么用JS,IFRAME等等方法,这些不适用PHP,因为PHP是服务端处理的。

解决方法:

只需2步就可以:

1、把referer设置为空,或设置为 https://mp.weixin.qq.com

2、把图片地址全部过滤为http://

关于第2步,如果不这么做,那有时不会成功,因为微信公众号中的图片,有时是http://,有时是https://,如果是https://那么即使设了第一步把referer为空,也不会成功。比如:

只设置第一步:

http://mmbiz.qpic.cn/mmbiz_jpg/PtoJIOrbNiciaOrg1q1MXf2V2hMiaSO7KT3Upv7mKd7I02Aq8XMBpuOuTU2tgswc7E8CD3LAARTIEkezkib3FKzA6w/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

这样是可以成功的。

但是:

https://mmbiz.qpic.cn/mmbiz_jpg/BLMSxng5Qsxjkic5dqouFlOc5CnDLmQEicFZk2BkVo0vn22FgkoVNrhOjQq27VNe50PPmvuAqDh0G6icic6G0Q3EYQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

就采集不到。

为了避免除微信外其它网站也能通用,最好加个if判断吧($url 是图片地址)://微信图片图片地址 https://mmbiz.qpic.cn/...  需要把https换成http,否则防盗链无法通过

if(stripos ($url, '.qlogo.cn')!==false || stripos ($url, '.qpic.cn')!==false)

{

$referer = 'https://mp.weixin.qq.com';

$httpUserAgent = $_SERVER['HTTP_USER_AGENT'];

$url = str_replace ('https://','http://', $url);

}

以上就可以了。

上面的方法是把微信图片抓取到自己的服务器图片目录下,如果您不想抓取,只想显示微信图片,不妨试试下面2种方式:

这两种方法我没试过,您自己测试。

1、借助跳板方式。

借助跳板,直接在图片链接前加上http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=

例如,

http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=http://mmbiz.qpic.cn/mmbiz_jpg/FmzqiasicEHF7rOXSZvVu5aibubKtpU4Sc78DRUwsjw3hZDxjJngLXug9o92pXA8FkcUAuiaZHk6XEI3eMGRbwIOPQ/0?wx_fmt=jpeg

2、借助了js,在iframe中加载了图片。

我的应用场景是这样的,我爬取了一些微信文章,需要把这些文章在自己的网站上展现,包括微信文章中的图片。

首先,js脚本,遍历微信文章中的图片,放到iframe中:

aa0301aaa188362b32c2ddbe3ecadbbe.png

其次,我写了点小样式,让整体布局稍微整齐看得顺眼一些,在每个iframe中也写了一些样式。

be2ee7fe579f2e3ef420163c1223da80.png

这样,我们想要的结果也就出来了。

7dcd46aa5703987b25dc39bbb4ab1e8e.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值