浏览量 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 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 resps = new List();

List 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 Posts { get; set; }

public DbSet PostsMetas { get; set; }

public DbSet Terms { get; set; }

public DbSet TermTaxonomies { get; set; }

public DbSet TermRelationships { get; set; }

public ContentDbContext(DbContextOptions options) : base(options)

{

}

protected override void OnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.Entity().ToTable("wp_posts");

modelBuilder.Entity().ToTable("wp_postmeta");

modelBuilder.Entity().ToTable("wp_terms");

modelBuilder.Entity().ToTable("wp_term_taxonomy");

modelBuilder.Entity().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(oprions => oprions.UseMySql(connectStr, ServerVersion.AutoDetect(connectStr)));

}

}

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