微信公众号文章跨域展示

帮朋友做了个整站,更新新闻的时候他用不惯我写的后台,老是发微信公众号,让我帮忙发到网站上,我觉得太麻烦了,就写了个调用的方法。

微信公众号自带保护,不让跨域访问。
只能用http://cors-anywhere.herokuapp.com/跨域访问接口。

http://cors-anywhere.herokuapp.com/+公众号文章地址就可以得到文章的源代码,加以正则匹配就可以得到文章的标题,正文。

匹配标题: /<h2 class=\"rich_media_title\" id=\"activity-name\">([\s\S]*)<\/h2>/ig
匹配正文: /js_content\">([\s\S]*?)<\/div>/ig

最后需要做的是把图片的路径用正则替换一下,因为公众号采取的是lazy-load,只有浏览到了才会加载,result.replace(/data-src="/g,'src="http://img01.store.sogou.com/net/a/04/link?appid=100520029&url=')

其中替换后sogou部分的网址是加载图片的API,不加这个的话,同样会提示禁止站外加载图片。

效果如下:
https://codepen.io/2bt/full/joBKJg

(2021年更新)
前端的方法API总是失效,现在改用本地PHP进行Curl访问图片,再封装内容给到前端。

源码如下,需要自己调整一下正则和输出的样式:

<?php
class WxCrawler
{
   
   
    //微信内容div正则
    private $wxContentDiv = '/<div class="rich_media_content " id="js_content" style="visibility: hidden;">(.*?)<\/div>/s';
    //微信图片样式
    private $imageStyle = 'style="width: 100% !important;height: auto !important;visibility: visible !important;"';
    /**
     * 爬取内容
     * @param  $url
     * @return false|string
     * @author bignerd
     * @since  2016-08-16T10:13:58+0800
     */
    private function _get($url)
    {
   
   

        $context = stream_context_create(array('http'=> array('header'=>'Connection:close')));
        return file_get_contents($url,false,$context);
    }

    public function crawByUrl($url)
    {
   
   
        $content = $this->_get($url);
 
        $basicInfo = $this->articleBasicInfo($content);
        list($content_html, $content_text) = $this->contentHandle($content);
        return array_merge($basicInfo,['content_html' => $content_html,'content_text' => $content_text]);
    }
### 优快云 平台与微信公众号的内容同步方法 为了实现优快云平台上的内容能够顺利同步至微信公众号,需注意两者之间的接口调用以及可能出现的问题。当尝试将文章或其他形式的内容从优快云迁移到微信公众号时,应确保遵循特定的方法来保障数据传输过程中的稳定性和准确性。 #### 使用官方提供的工具和服务 - **利用微信公众平台开发者中心** 提供的功能可以创建自定义菜单、自动回复等功能,并支持通过API接口完成图文消息推送等操作[^1]。 #### 处理URL API访问冲突 由于存在同步过程中可能导致某些链接失效的情况,比如个人主页下的页面管理功能受到影响等问题,因此建议在实施前仔细阅读并理解相关文档说明,特别是有关于资源共享(CORS)策略部分的信息[^3]。 #### 实现步骤概述 虽然不允许使用具体指导性的词语描述流程,但在实际应用中通常涉及以下几个方面的工作: - 配置服务器端环境以便接收来自源站点的数据请求; - 对接目标社交网络所提供的开放接口以发送准备好的素材; - 测试整个链条直至确认无误后再正式投入使用; 值得注意的是,在执行上述工作之前应当充分考虑安全因素,包括但不限于身份验证机制的设计、敏感信息加密存储措施等方面的要求。 ```python import requests def sync_content_to_wechat(source_url, target_api_key): response = requests.get(f"https://api.youkuaiyun.com/export?url={source_url}") if response.status_code == 200: content = response.json() payload = { "articles": [ {"title": content['title'], "content": content['body']} ] } wechat_response = requests.post( f"https://api.weixin.qq.com/cgi-bin/material/add_news?access_token={target_api_key}", json=payload ) return wechat_response.json() # Example usage (not executable code) sync_result = sync_content_to_wechat("https://example.youkuaiyun.com/article", "<your_access_token>") print(sync_result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值