分享:自媒体人必备工具——微信公众号文章搜索下载助手,1.4.4版本更新

优采云 发布时间: 2022-11-02 03:30

  分享:自媒体人必备工具——微信公众号文章搜索下载助手,1.4.4版本更新

  微信公众号文章搜索助手V1.4.4版本更新上线

  本次重大更新内容:

  1.修复文章中大量下载失败的问题。该版本开始使用本地服务下载,提高下载速度,大大减少下载失败的问题;

  2.修复文章摘要显示时间格式错误;

  3. 从列表框中删除拖放多选。该功能偶有重大BUG,暂时下线;

  4.新增文章搜索汇总关键词过滤,结果更准确;

  5、优化了选择公众号的卡顿问题;

  6.优化摘要显示,更加美观直观;

  7.增加FAQ部分,详见软件界面;

  新版下载地址:

  做 自媒体,没有 文章 材料?

  各种福利活动,没有最新消息?

  想看*敏*感*词*者联盟4这样的最新电影却没有资源?

  想要搜索任何网络资源,但没有工具?

  

  它在线

  微信公众号文章搜索助手,关键词一键搜索所有微信公众号文章,可采集指定所有公众号历史海量分布文章,无论你是在做自媒体找各种文章素材,还是做活动找各种新闻报道,还是找各种影视资源等等,都能满足你,什么你要搜索,而且功能非常非常非常强大,废话不多说,先看看具体介绍吧!

  注:本软件为电脑软件,手机无法使用。软件由编辑器开发,不用担心病毒。如果360等病毒上报软件上报病毒,可以加信任。

  ★功能介绍★

  1、通过关键词搜索所有微信公众号文章,支持按指定时间段搜索相关内容,支持文章内容以word、pdf、excel格式导出;

  2. 一键采集指定公众号所有历史文章,支持文章批量导出word和pdf格式的内容(文章原版排版,正文+图片);

  3、关键词搜索相关的文章内容可按发布时间、标题、公众号排序,支持标题去重,搜索结果二次搜索;

  4、关键词搜索文章支持通过公众号和关键词屏蔽,所有不想看到的内容都会被过滤掉,支持拖拽选择,一键拦截;

  5.内置自动验证码打印,以及IP自动切换功能,解放双手,操作更方便;

  6、文章内容页面支持关键词搜索,快速查找是否是你需要的文章;

  7、保存搜索关键词历史,搜索再搜索关键词,直接从搜索历史中拉出关键词,输入更方便;

  8.内置大量快捷键,勾选文章,搜索内容更方便人性化;

  9.搜索记录实时保存,方便打开软件加载之前搜索到的内容,更*敏*感*词*,等你下载体验;

  如果觉得软件不错,一定要分享给小编

  爱你,好吧

  

  ◆图片介绍◆

  ■下载地址■

  哪里可以下载这么好的东西?

  浏览器输入网址下载

  或者百度直接搜索微信公众号文章搜索助手V1.4.2

  遇到问题可以识别发二维码加作者微信

  失望:小怡同学被骂到清空社交平台?各大平台连敏感词库都没有吗?

  一个没有敏感词的平台

  近日,一位加拿大籍说唱歌手被曝私生活不谨慎,极有可能参与勾引*敏*感*词*少女成为说唱歌手。

  胖虎

  当然,至于是否属实,其实一个人是不是海王,在​​微信和聊天记录中都能清楚的记住。在刑事*敏*感*词*方面,TX可以完整查看所有历史记录。腾讯视频与一条电鳗解约也未必是空穴来风,毕竟利益相关。

  但我在整个过程中发现了两个非常值得注意的点:

  (1) 绯闻女友小艺被骂清空所有社交平台。作为一个吃瓜大户,X博客只会被服务器瘫痪,不知道敏感词过滤?

  (2)举报人杜美珠收了很多雪| 鱼腥味的照片。天天用人工智能的平台不是没有过滤功能吗?

  当然,我对人工智能一无所知。

  但是对于敏感词,我最近写了一个小工具。各大平台需要的话,已经开源了,欢迎大家自己拿。

  至少你可以像下面这样对漂亮的中文单词进行脱敏:

  你 XXX 的,我 XXX 你 XXX,你 XXXX,XXX!!XXX!

  创意目的

  基于DFA算法,当前敏感词库内容为收录 6W+(源文件为18W+,删除后)。

  后期将继续对敏感词库进行优化和补充,进一步提升算法性能。

  希望敏感词的分类能细化。感觉工作量比较大,暂时没有进行。

  我们在这里谈谈视觉。愿景是成为第一个易于使用的敏感词工具。

  当然,第一个总是空的。

  虚空之子

  特性 快速入门 准备 Maven 介绍

  

    com.github.houbb

    sensitive-word

    0.0.15

  api概览

  SensitiveWordHelper 是一个敏感词的工具类。核心方法如下:

  方法

  范围

  返回值

  阐明

  收录(字符串)

  要验证的字符串

  布尔值

  验证字符串是否收录敏感词

  查找所有(字符串)

  要验证的字符串

  字符串列表

  返回字符串中的所有敏感词

  替换(字符串,字符)

  用指定的字符替换敏感词

  细绳

  返回脱敏后的字符串

  替换(字符串)

  使用 * 替换敏感词

  细绳

  返回脱敏后的字符串

  使用示例

  查看所有测试用例的 SensitiveWordHelperTest

  判断是否收录敏感词

  final String text = "敏感词1迎风飘扬,敏感词2的画像屹立在敏感词3前。";

Assert.assertTrue(SensitiveWordHelper.contains(text));

  返回第一个敏感词

  final String text = "敏感词1迎风飘扬,敏感词2的画像屹立在敏感词3前。";

String word = SensitiveWordHelper.findFirst(text);

Assert.assertEquals("敏感词1", word);

  返回所有敏感词

  final String text = "敏感词1迎风飘扬,敏感词2的画像屹立在敏感词3前。";

List wordList = SensitiveWordHelper.findAll(text);

Assert.assertEquals("[敏感词1, 敏感词2, 敏感词3]", wordList.toString());

  默认替换策略

  final String text = "敏感词1迎风飘扬,敏感词2的画像屹立在敏感词3前。";

String result = SensitiveWordHelper.replace(text);

Assert.assertEquals("****迎风飘扬,***的画像屹立在***前。", result);

  指定要替换的内容

  final String text = "敏感词1迎风飘扬,敏感词2的画像屹立在敏感词3前。";

String result = SensitiveWordHelper.replace(text, '0');

Assert.assertEquals("0000迎风飘扬,000的画像屹立在000前。", result);

  更*敏*感*词*

  以下功能主要针对处理各种情况,尽可能提高敏感词的命中率。

  这是一场漫长的攻守战。

  忽略大小写

  final String text = "fuCK the bad words.";

String word = SensitiveWordHelper.findFirst(text);

Assert.assertEquals("fuCK", word);

  忽略半角

  final String text = "fuck the bad words.";

String word = SensitiveWordHelper.findFirst(text);

Assert.assertEquals("fuck", word);

  忽略数字的拼写

  常见数字形式的转换在这里实现。

  final String text = "这个是我的微信:9⓿二肆⁹₈③⑸⒋➃㈤㊄";

List wordList = SensitiveWordHelper.findAll(text);

Assert.assertEquals("[9⓿二肆⁹₈③⑸⒋➃㈤㊄]", wordList.toString());

  忽略繁体和简体

  final String text = "我爱我的祖国和五星紅旗。";

List wordList = SensitiveWordHelper.findAll(text);

Assert.assertEquals("[五星紅旗]", wordList.toString());

  忽略英文写作格式

  final String text = "Ⓕⓤc⒦ the bad words";

List wordList = SensitiveWordHelper.findAll(text);

Assert.assertEquals("[Ⓕⓤc⒦]", wordList.toString());

  忽略重复的单词

  final String text = "ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦ the bad words";

List wordList = SensitiveWordHelper.findAll(text);

Assert.assertEquals("[ⒻⒻⒻfⓤuⓤ⒰cⓒ⒦]", wordList.toString());

  邮箱检测

  

  final String text = "楼主好人,邮箱 sensitiveword@xx.com";

List wordList = SensitiveWordHelper.findAll(text);

Assert.assertEquals("[sensitiveword@xx.com]", wordList.toString());

  功能配置说明

  以上特性默认开启,有时业务需要灵活定义相关配置特性。

  所以 v0.0.14 开启了属性配置。

  配置方法

  为了让使用更加优雅,使用fluent-api统一定义。

  用户可以使用 SensitiveWordBs 定义如下:

  SensitiveWordBs wordBs = SensitiveWordBs.newInstance()

        .ignoreCase(true)

        .ignoreWidth(true)

        .ignoreNumStyle(true)

        .ignoreChineseStyle(true)

        .ignoreEnglishStyle(true)

        .ignoreRepeat(true)

        .enableNumCheck(true)

        .enableEmailCheck(true)

        .enableUrlCheck(true)

        .init();

final String text = "敏感词1迎风飘扬,敏感词2的画像屹立在敏感词3前。";

Assert.assertTrue(wordBs.contains(text));

  配置说明

  各配置说明如下:

  序列号

  方法

  阐明

  1

  忽略大小写

  忽略大小写

  2

  忽略宽度

  忽略半角

  3

  忽略NumStyle

  忽略数字的拼写

  4

  忽略中国风

  忽略中文书写格式

  5

  忽略EnglishStyle

  忽略英文写作格式

  6

  忽略重复

  忽略重复的单词

  7

  enableNumCheck

  是否开启数字检测。默认情况下,连续 8 个数字被视为敏感词

  8

  启用电子邮件检查

  是 已启用邮箱检测

  9

  启用网址检查

  是否开启链路检测

  动态加载(用户自定义)场景描述

  有时候我们想把敏感词的加载设计成动态的,比如控制台修改,然后实时生效。

  v0.0.13 支持此功能。

  接口说明

  为了实现此功能并与以前的功能兼容,我们定义了两个接口。

  拒绝

  界面如下,你可以自定义自己的实现。

  返回的列表,表明该词是敏感词。

  /**

 * 拒绝出现的数据-返回的内容被当做是敏感词

 * @author binbin.hou

 * @since 0.0.13

 */

public interface IWordDeny {

    /**

     * 获取结果

     * @return 结果

     * @since 0.0.13

     */

    List deny();

}

  例如:

  public class MyWordDeny implements IWordDeny {

    @Override

    public List deny() {

        return Arrays.asList("我的自定义敏感词");

    }

}

  允许

  界面如下,你可以自定义自己的实现。

  返回的列表,表明该词不是敏感词。

  /**

 * 允许的内容-返回的内容不被当做敏感词

 * @author binbin.hou

 * @since 0.0.13

 */

public interface IWordAllow {

    /**

     * 获取结果

     * @return 结果

     * @since 0.0.13

     */

    List allow();

}

  喜欢:

  public class MyWordAllow implements IWordAllow {

    @Override

    public List allow() {

        return Arrays.asList("敏感词1");

    }

}

<p>

</p>

  配置使用

  接口自定义后,当然需要指定才能生效。

  为了让使用更加优雅,我们设计了引导类 SensitiveWordBs。

  wordDeny() 可以指定敏感词,wordAllow() 可以指定非敏感词,init() 可以初始化敏感词字典。

  系统默认配置

  SensitiveWordBs wordBs = SensitiveWordBs.newInstance()

        .wordDeny(WordDenys.system())

        .wordAllow(WordAllows.system())

        .init();

final String text = "敏感词1迎风飘扬,敏感词2的画像屹立在敏感词3前。";

Assert.assertTrue(wordBs.contains(text));

  注意:init() 构造敏感词 DFA 比较耗时。一般建议在应用初始化时只初始化一次。而不是重复初始化!

  指定您自己的实现

  我们可以按如下方式测试我们的自定义实现:

  String text = "这是一个测试,我的自定义敏感词。";

SensitiveWordBs wordBs = SensitiveWordBs.newInstance()

        .wordDeny(new MyWordDeny())

        .wordAllow(new MyWordAllow())

        .init();

Assert.assertEquals("[我的自定义敏感词]", wordBs.findAll(text).toString());

  这里只有我自定义的敏感词是敏感词,test不是敏感词。

  当然我们这里所有的自定义实现都是用的,一般推荐使用系统默认配置+自定义配置。

  可以使用以下方法。

  同时配置多个

  WordDenys.chains() 方法,它将多个实现组合到同一个 IWordDeny 中。

  WordAllows.chains() 方法,它将多个实现组合到同一个 IWordAllow 中。

  例子:

  String text = "这是一个测试。我的自定义敏感词。";

IWordDeny wordDeny = WordDenys.chains(WordDenys.system(), new MyWordDeny());

IWordAllow wordAllow = WordAllows.chains(WordAllows.system(), new MyWordAllow());

SensitiveWordBs wordBs = SensitiveWordBs.newInstance()

        .wordDeny(wordDeny)

        .wordAllow(wordAllow)

        .init();

Assert.assertEquals("[我的自定义敏感词]", wordBs.findAll(text).toString());

  此处使用系统默认配置和自定义配置。

  spring 集成背景

  在实际使用中,比如可以修改页面配置,然后实时生效。

  数据存储在数据库中,下面是伪代码示例,可以参考SpringSensitiveWordConfig.java

  要求,版本 v0.0.15 及更高版本。

  自定义数据源

  简化的伪代码如下,数据的来源是数据库。

  MyDdWordAllow 和 MyDdWordDeny 是基于数据库源的自定义实现类。

  @Configuration

public class SpringSensitiveWordConfig {

    @Autowired

    private MyDdWordAllow myDdWordAllow;

    @Autowired

    private MyDdWordDeny myDdWordDeny;

    /**

     * 初始化引导类

     * @return 初始化引导类

     * @since 1.0.0

     */

    @Bean

    public SensitiveWordBs sensitiveWordBs() {

        SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance()

                .wordAllow(WordAllows.chains(WordAllows.system(), myDdWordAllow))

                .wordDeny(myDdWordDeny)

                // 各种其他配置

                .init();

        return sensitiveWordBs;

    }

}

  敏感词库的初始化非常耗时。建议在程序启动时进行 init 初始化。

  动态变化

  为了保证敏感词的修改能够实时生效,保证界面尽可能的简化,这里没有新的添加/删除方法。

  而是在调用sensitiveWordBs.init()时,根据IWordDeny+IWordAllow重建敏感词库。

  由于初始化可能需要较长时间(秒级),所有优化在init未完成时不会影响旧词库功能,完成后以新词库功能为准。

  @Component

public class SensitiveWordService {

    @Autowired

    private SensitiveWordBs sensitiveWordBs;

    /**

     * 更新词库

     *

     * 每次数据库的信息发生变化之后,首先调用更新数据库敏感词库的方法。

     * 如果需要生效,则调用这个方法。

     *

     * 说明:重新初始化不影响旧的方法使用。初始化完成后,会以新的为准。

     */

    public void refresh() {

        // 每次数据库的信息发生变化之后,首先调用更新数据库敏感词库的方法,然后调用这个方法。

        sensitiveWordBs.init();

    }

}

  如上,可以主动触发一个初始化的sensitiveWordBs.init();当数据库词库发生变化,词库需要生效时。

  其他用法保持不变,无需重新启动应用程序。

  冠希哥微微一笑,想​​要做事,必须先做人。

  关西阁

  延伸阅读

  敏感词工具实现思路

  DFA算法解释

  敏感词库优化过程

  停止单词思考

  概括

  再次,我们用法律为自己辩护,但我们绝不能让某些人娱乐一切,认为金钱可以买到一切。

  值此世纪之际,决不能让祖先的血白流。

  更何况是加拿大演员三无,建议*敏*感*词**敏*感*词*)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线