Html代码白名单过滤插件(C#)

作者:小文 发布于:2010-10-18 9:28 Monday 分类:免费插件

该插件将过滤掉所有除需要外的html代码.在处理前您需要使用采集器过滤js,css等代码.您可以下载该插件或是自己修改代码以达到自己的需要.

插件主要源码:

using System;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Collections.Generic;

/*注意事项
 * 1.这个命名空间不能更改.当然,你可以在其它的文件里使用其它的命名空间,在这里使用.
 * 2.必须引用采集器目录下的LeWell.dll文件.
 * 3.必须实现 IPlugin接口 里的 Run 方法
 * 4.编写过程出请对传入传出的参数进行检测
 * */

namespace LeWell.Plugins
{
    public class Demo : LeWell.Plugins.IPlugin   //使用的IPlugin接口,请引用 LeWell.Plugins.dll 文件
    {
        /// <summary>
        /// 插件运行处理预留方法
        /// </summary>
        /// <param name="str">要处理的源代码</param>
        /// <param name="pageurl">采集页面地址</param>
        /// <param name="pagetype">页面类型为一枚举 LeWell.Plugins.PageType ,其中List,Pages,Content,Save分别代表列表页,分页或多页,默认页,保存时</param>
        /// <param name="encoding">页面编码</param>
        /// <param name="cookies">网站的cookies</param>
        /// <returns></returns>
        public string Run(string str, string pageurl, LeWell.Plugins.PageType pagetype, Encoding encoding, System.Net.CookieCollection cookies)
        {
            ////请在这里执行您的操作,返回string
            //string result = "这个结果是单页面测试,后边的数据为程序接收到的数据:\r\n\r\n";
            //result += "当前的页面网址为:" + pageurl.ToString() + "\r\n";
            //result += "当前的页面类型为:" + pagetype.ToString() + "\r\n";
            //result += "当前的网页编码为:" + encoding.ToString() + "\r\n";
            //result += "当前网页的代码为:" + str.ToString() + "\r\n";
            return str;
        }

      
        /// <summary>
        /// 这个是用来在最后处理采集器入库前的数据的
        /// </summary>
        /// <param name="ht"></param>
        /// <param name="pageurl"></param>
        /// <param name="encoding"></param>
        /// <param name="cookies"></param>
        /// <returns></returns>
        public Hashtable Run(Hashtable ht, string pageurl, Encoding encoding, System.Net.CookieCollection cookies)
        {
            System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>();
            if (ht.ContainsKey("内容"))
            {
                string data = ht["内容"].ToString();
                if (string.IsNullOrEmpty(data)) return ht;

                list.Add("div");
                list.Add("ul");
                list.Add("dt");
                list.Add("dl");
                list.Add("dd");
                list.Add("table");
                list.Add("tbody");
                list.Add("tr");
                list.Add("td");
                list.Add("p");

                foreach (string s in list)
                {
                    data = System.Text.RegularExpressions.Regex.Replace(data, "<(/?)" + s + "[^>]*?>", "<$1" + s + ">", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                    data = System.Text.RegularExpressions.Regex.Replace(data, "<(/?)" + s + ">", "ASDFGHJKL$1" + s, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                }

                data = System.Text.RegularExpressions.Regex.Replace(data, "<br(\\s)?/?>", "QWERTYUIOPB", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                List<KeyValuePair<string, string>> dic = new List<KeyValuePair<string, string>>();
                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("<a[^>]*?>[^<]*?</a>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                System.Text.RegularExpressions.MatchCollection mc = regex.Matches(data);
                foreach (System.Text.RegularExpressions.Match m in mc)
                {
                    dic.Add(new KeyValuePair<string, string>(m.Value, base64_encode(m.Value)));
                }

                regex = new System.Text.RegularExpressions.Regex("<img\\s+[^>]*?>",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                mc = regex.Matches(data);
                foreach (System.Text.RegularExpressions.Match m in mc)
                {
                    dic.Add(new KeyValuePair<string, string>(m.Value, base64_encode(m.Value)));
                }

                data = System.Text.RegularExpressions.Regex.Replace(data,"<[^>]*?>", "");

                foreach (KeyValuePair<string, string> kv in dic)
                {
                    data = data.Replace(kv.Value, kv.Key);
                }

                foreach (string s in list)
                {
                    data = data.Replace("ASDFGHJKL" + s, "<" + s + ">");
                    data = data.Replace("ASDFGHJKL/" + s, "</" + s + ">");
               }
                data = data.Replace("QWERTYUIOPB","<br>");
                ht["内容"] = data;
            }
            return ht;
        }

        /// <summary>
        ///Base64加密
        /// </summary>
        /// <returns>返回string</returns>
        public  string base64_encode(string s)
        {
            string strResult = "";

            if ((s != null) && (s != ""))
            {
                strResult = Convert.ToBase64String(System.Text.ASCIIEncoding.Default.GetBytes(s));
            }

            return strResult;
        }

        /// <summary>
        ///Base64解密
        /// </summary>
        /// <returns>返回string</returns>
        public  string base64_decode(string s)
        {
            string strResult = "";

            if ((s != null) && (s != ""))
            {
                int buling = s.Length % 4;
                if (buling == 3) s = s + "=";
                else if (buling == 2) s = s + "==";
                else if (buling == 1) s = s.Substring(0, s.Length - 1);
                strResult = System.Text.ASCIIEncoding.Default.GetString(Convert.FromBase64String(s));
            }

            return strResult;
        }
    }

}
 

标签: 过滤

评论(0) 引用(0) 浏览(8685)

PHPWind 8.0 论坛免登陆发布接口发布

作者:小文 发布于:2010-10-16 9:44 Saturday 分类:免费接口

PHPWind 8.0 论坛免登陆发布接口使用说明

一、功能特性
1、免登陆,用户可以设置验证密码来防止未授权的访问.
2、多用户随机发布主题和回复.


二、使用教程
1、文字教程
    1.1、选择您网站对应的接口文件.如您网站是gbk编码,请选择 jiekou_gbk.php,如果您论坛是utf8编码,请选择 jiekou_utf8.php.
    1.2、打开接口文件,修改验证密码,设置随机回复用户名,然后保存.
    1.3、修改接口文件名并上传至网站的根目录.
    1.4、修改发布模块 PHPWind 8.0 论坛免登陆接口发布模块.cwr ,将发布模块里的发布文件地址后缀及刷新列表文件地址后缀中的文件名修改为您刚才修改的接口文件名,并设置随机发布用户名.
    1.5、设置发布配置,采集并开始发布.
2、视频教程
    参考教程:http://video.locoy.com/jiekou/discuz/discuz7.2.7z

三、注意事项
1、该接口仅适用于发布主题或回复到到 PHPWind 8.0 论坛.
2、该接口基于PHPWind 8.0 GBK版制作,适用于PHPWind 8.0 GBK/utf-8版本,请在使用时接口选择对应的版本.
3、果您需要发布主题和回复,则需要在内容标签中,将 回复及主题以|||相连接.
4、如果您需要指定用采集的发布时间,则需要提交所有主题和回复的时间.多个发布时间之间以|||分隔.时间格式为 2010-10-11 10:12 类类似 .并且主题和回复的时间格式需要可以正确格式化成PHP的系统时间戳形式.




四.参数说明
1、必选参数
  title        标题
  content      内容
    cid          主栏目ID,必填,可在后台网站栏目管理处查看该id
    username          用户名,必须使用网站上已存在的用户名,默认是随机用户名,用户需要在模块中设置
    pw                验证密码.在刷新列表和post发布时使用,需要模块和接口中的验证密码一致.

2、可选参数   
  tags          关键字
    spidertime        主题发布的时间,如果没有设置,则使用随机时间,随机时间是在当前时间的前一段时间取值.多个发布时间之间以|||分隔
 

标签: phpwind

评论(9) 引用(0) 浏览(23324)

火车采集器图片识别程序

作者:小文 发布于:2010-10-13 13:26 Wednesday 分类:其它资源

该工具可以配合火车采集器图片识别插件工具.该插件下载地址: http://board.locoy.com/?post=24

 

点击查看原图

 

使用方法如下:


将该工具放在和火车采集器同目录下.否则不能运行.

请先输入图片地址,然后点击下载,则可以看到如图中的远程图片.然后,点击识别,程序会自动将数字分割.每个数字下边对应的是相应的识别值.如果图片中的数字和实际的不符,请在对应的文本框内写上正确的数字,然后点击ok按钮,程序会将该特征码保存,然后请再次点击识别.如果正确,则可以进行其它操作了.如果您一不小心添加了错误的标识码,没关系,请在对应的号码上双击,就可以将其删除掉.

当所有的数字识别均正确后,可以点击保存特征码,将已识别的保存在文件中.如果需要在火车采集器中使用,则需要将上边我们提到的插件启用,同时,将导出的特征码的文件命名为 image.txt,放在火车采集器程序的同目录下即可.导出的特征码,如果下次使用,可以使用加载特征码的功能加载.

标签: 识别 图片

评论(11) 引用(0) 浏览(15466)

DEDECMS自定义模型web发布模块制作注意事项

作者:小文 发布于:2010-10-4 23:45 Monday 分类:常见问题

如果你是用了自定义模型,并且添加了自定义字段,要制作web发布模块的时候应该按照以下步骤更改原对应模块(以文章系统系统为例)

1.在post值中增加对应字段的名称和标签值。比如我自定义了一个模型,模型识别id是16,自定义了一个新字段,数据库字段名称为 xinziduan,类型为单行文本那么应该更改

channeltype=16&channelid=16

2.追加自定义字段的post代码,加入 &xinziduan=[标签:新字段]  ,并且在采集规则中采集好对应的 新字段 标签

一般朋友做到这里就结束了。结果发现还是不能用!新字段采集的内容还是不能正常发表!其实还有一个很重要的原因被忽略了。你应该再追加一句话:

&dede_addonfields=xinziduan%2Ctext%3B

这句话是用来提交你新追加字段的表单信息,你可以通过某些工具看到这句话。在默认的模型中是没有这句post值的。
另外他追加的数值中原格式是 xinziduan,text;  但是你发post值得时候应该将标点和中文decode成utf8格式的编码,才能正常使用。所以 逗号编码为%2C,分号为 %3B
这样就能保证你的内容正常使用了

这个数值中逗号前边是字段名称,后边是类型。不要写错。
你可以用抓包软件截取到post的值看看就知道了。


原作者:qcmcat  测试通过.

标签: dede

评论(2) 引用(0) 浏览(16807)

Wordpress 2.9.2,3.0.1 免登陆发布接口

作者:小文 发布于:2010-9-27 9:56 Monday 分类:免费接口

 

Wordpress2.9.2,3.0.1 免登陆文章发布接口使用说明

一、功能特性
1、免登陆,用户可以设置验证密码来防止未授权的访问.
2、多用户随机发布文章.
3、适用wordpress 2.9.2和3.0.1

二、使用教程
1、文字教程
    1.1、从火车采集器官方下载接口文件.
    1.2、打开接口文件,修改验证密码,然后保存.
    1.3、修改接口文件名并上传至网站的根目录.
    1.4、修改发布模块 Wordpress2.9.2 免登陆接口发布模块.cwr ,将发布模块里的发布文件地址后缀及刷新列表文件地址后缀中的文件名修改为您刚才修改的接口文件名.
    1.5、设置发布配置,采集并开始发布.
2、视频教程请参考:
    DedeCMS: http://video.locoy.com/jiekou/dede/dede56_article.7z
    帝国CMS: http://video.locoy.com/jiekou/ecms/ecms65_article.7z


三、注意事项
1、该接口是接口程序直接操作的数据库,目前支持写入文章及添加tag,如果您添加了某些插件,是发表文章时使用的,应不会起效.如有此种情况,您可以在发布完成后再编辑以达到效果.


四.参数说明
1、必选参数
    title             标题
    content                内容
    fid                栏目ID
    username                用户名,必须使用网站上已存在的用户名,默认是随机用户名,用户需要在模块中设置
    pw                      验证密码.在刷新列表和post发布时使用,需要模块和接口中的验证密码一致.

2、可选参数   
    post_date               发布时间,格式为 2010-01-01 12:20:10
    post_excerpt            摘要
    post_tags               tags,多个之间用,分隔

标签: wordpress

评论(42) 引用(0) 浏览(38173)

Powered by emlog