网站被腾讯安全拦截处理

2023-03-03 18:13:19 浏览数 (2)

浏览量 8

近期网站被腾讯安全拦截,微信,QQ也不能打开链接了,必须进行申诉,对网站进行解封,解封之前,我们必须要把可能违规的内容进行处理,处理之后才能解除限制。

如何查找违规内容

我们可以使用云厂商提供的内容安全接口,进行批量的内容检测,这里我使用腾讯云的内容安全进行处理,初次使用,有10000条免费检测条目,超过之后需要收费。

第一步,我们取出网站的所有内容,第二步,调用腾讯内容安全提供的接口,可以使用其提供的SDK,第三步,筛选出违规内容进行处理。这里使用.net构建内容检测程序,参考代码:

代码语言:javascript复制
//ApiCheckController.cs
using ContentService.Infrastructure;
using Microsoft.AspNetCore.Mvc;
using TencentCloud.Common.Profile;
using TencentCloud.Common;
using TencentCloud.Tms.V20201229;
using TencentCloud.Tms.V20201229.Models;
using ContentService.Domain.Model;
using System.Text;
using System.Buffers.Text;
using TencentCloud.Mrs.V20200910.Models;
using System.Text.Json;
using System.Text.RegularExpressions;

namespace ContentService.WebApi.Controllers
{
    [Route("Api/[controller]/[action]")]
    [ApiController]
    public class ApiCheckController : Controller
    {
        private readonly ContentDbContext _contentDbContext;
        public ApiCheckController(ContentDbContext contentDbContext)
        {
            _contentDbContext = contentDbContext;
        }
        [HttpGet]
        public async Task<IActionResult> CheckContents()
        {
            Credential cred = new Credential
            {
                SecretId = TxConfig.SecretId,
                SecretKey = TxConfig.SecretKey
            };
            // 实例化一个client选项,可选的,没有特殊需求可以跳过
            ClientProfile clientProfile = new ClientProfile();
            // 实例化一个http选项,可选的,没有特殊需求可以跳过
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.Endpoint = ("tms.tencentcloudapi.com");
            clientProfile.HttpProfile = httpProfile;

            // 实例化要请求产品的client对象,clientProfile是可选的
            TmsClient client = new TmsClient(cred, "ap-beijing", clientProfile);
            // 实例化一个请求对象,每个接口都会对应一个request对象
            TextModerationRequest req = new TextModerationRequest();

            List<TextModerationResponse> resps = new List<TextModerationResponse>();
            List<PostModel> posts = _contentDbContext.Posts.Where(x => x.post_type == "post" && x.post_status == "publish").ToList();
            foreach (PostModel post in posts)
            {
                try
                {
                    byte[] bytes = Encoding.UTF8.GetBytes(post.post_content);
                    req.Content = Convert.ToBase64String(bytes);
                    TextModerationResponse resp = client.TextModerationSync(req);
                    Console.WriteLine(AbstractModel.ToJsonString(resp));
                    resps.Add(resp);
                }
                catch (Exception ex)
                {
                    continue;
                }

            }
            return Json(resps);
        }

    }
}
代码语言:javascript复制
//ContentDbContext.cs
using ContentService.Domain.Model;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ContentService.Infrastructure
{
    public class ContentDbContext : DbContext
    {
        public DbSet<PostModel> Posts { get; set; }
        public DbSet<PostMetaModel> PostsMetas { get; set; }
        public DbSet<TermModel> Terms { get; set; }
        public DbSet<TermTaxonomyModel> TermTaxonomies { get; set; }
        public DbSet<TermRelationships> TermRelationships { get; set; }
        public ContentDbContext(DbContextOptions<ContentDbContext> options) : base(options)
        {

        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<PostModel>().ToTable("wp_posts");
            modelBuilder.Entity<PostMetaModel>().ToTable("wp_postmeta");
            modelBuilder.Entity<TermModel>().ToTable("wp_terms");
            modelBuilder.Entity<TermTaxonomyModel>().ToTable("wp_term_taxonomy");
            modelBuilder.Entity<TermRelationships>().ToTable("wp_term_relationships");
        }
    }
}
代码语言:javascript复制
//数据库服务注册
//ModuleInitializer.cs
using Common;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ContentService.Infrastructure
{
    public static class ModuleInitializer
    {
        public static void Initialize(this IServiceCollection services, ConfigurationManager configurationManager)
        {
            //数据库服务
            IConfigurationSection configuration = configurationManager.GetSection("DataBase:ConnectStr");
            var connectStr = configuration.Value;
            services.AddDbContext<ContentDbContext>(oprions => oprions.UseMySql(connectStr, ServerVersion.AutoDetect(connectStr)));
        }
    }
}

统计结果

使用内容安全的默认策略,也可以自己设置,可根据明细查询,筛选违规内容,找到网站对应内容进行删除即可,这里的机器识别个人感觉没有那么智能,不能根据内容语义识别,只能识别词汇,所以处理并不需要全部进行删除处理。

0 人点赞