近段闲着无聊便开发了一系列贴吧的辅助性工具,比如自动发帖机(爆吧必备神器)、自动回复机(挖坟必备神器)、自动删帖机(拆吧必备神器),前面的三个工具百度比较痛恨,当然还有一些好的辅助工具比如贴吧最新消息短信(飞信)推送系统、定向删帖系统(自动识别水贴和匿名贴)、还有各种发帖机器人(发“天气预报”、发“历史的今天”)等,我简要介绍,这四天开发这些工具经历的一个过程。
首先,我以前做的很多项目是根本不涉及网页抓取的,因为不需要这些功能,第一次接触网页抓取是半个月前帮国家重点实验室的一位教授抓取两千六百个城市的天气预报然后处理数据存到数据库供研究用,详情见http://lvxinwei.sinaapp.com/832.html 。然后感觉抓取技术用处很大,正好我比较喜欢玩贴吧,便感觉可以在这块开发一些产品。
首先我想到的是做贴吧消息推送系统,这样我可以订阅一些贴吧,那些贴吧内容更新时可以把更新的内容短信发给我,原理很简单,一个脚本定时抓取订阅贴吧的所有帖子存到数据库或与数据库已经存在的帖子比较是否为最新帖子,设置状态标志符号new,初始为1,然后一个程序定时抓取那些new=1的帖子的所有回复,抓取完毕设置new=0;详情见http://lvxinwei.sinaapp.com/852.html 但是这个系统原理简单却做得不好,首先用了JS语言,数据处理能力太弱,再次就是发到的是139邮箱,接收到的提醒长度有限制,然后大改了下,语言全部采用PHP,并抽象出了飞信接口,用飞信发消息。
在用PHP重写上个系统时,我注意到可以把发帖功能做成接口,然后我做了,完全模拟人工发帖,最后测试时爆了一个学妹的吧,被记恨了几天,同时介绍下我测试的数据,发帖一分钟达到10贴会导致账号被封,一分钟一贴,发够90贴要输入验证码,两分钟一贴随便发,不会出现问题,回复没测试,但是目测一分钟回10贴没问题。
再然后我想做个发帖机器人可以抓取最新的新闻等等自动发到贴吧,但是出现了问题,我没解决自动回复问题,如果每条新闻发一贴就算是变相爆吧了,所以我又巧妙地把回复功能抽取出来了,然后我改进了发帖功能,发帖后可以返回刚发帖子的ID,做这一块时要注意置顶帖的干扰。
做到这,对于普通用户功能够用了,可偏偏我是几个贴吧吧主,并担任学校贴吧吧主,我在想能不能通过技术手段杜绝丧失贴和水贴,分析下,做这块需要的技术是:帖子抓取+帖子内容识别+帖子删除,幸运的是前两个功能在前面已经实现了。于是,我又把删帖功能抽取出来了,再然后一个复杂、强大的贴吧辅助工具成型了。
做那些有点麻烦的功能时不妨分隔成几个部分,不然不好找出头绪。
本文不涉及具体技术,有兴趣联系我索要源代码,我都封装好了、
昨晚爆了百度贴吧—-悲催
九级大号被封,不该用大号测试程序。
奉劝爆吧者:
1.不要用大号测试,多注册马甲
2.发帖频率控制在一分钟一贴(每个马甲),但是我测试一分钟一贴一个多小时后再登录要验证码
3.百度验证码不好破解,网上说的value值隐藏加密字符串,然后更改字符串欺骗服务器就是扯淡,用三级号才是王道
代码不上了。
XML介绍
构造良好并且有效的 XML
如果您根据结构规则创建 XML,就很容易实现构造良好的 XML。构造良好的 XML 即遵循所有 XML 规则创建的 XML:正确的元素命名,嵌套,属性命名等等。
要实现构造良好的 XML 取决于如何处理 XML。但考虑一下前面提到的示例,它要求根据菜谱类型进行分类。您需要确保每个
验证 就是根据元素规则检查文档的结构,以及如何为每个父元素定义子元素。这些规则是在 文档类型定义(Document Type Definition,DTD)或模式(schema )中定义的。验证要求您创建自己的 DTD 或 schema ,然后在 XML 文件中引用 DTD 或 schema 文件。
为了实现验证,必须在 XML 文档的顶部附近包含文档类型(DOCTYPE)。这行代码将引用用于验证文档的 DTD 或 schema (元素和规则列表)。例如,DOCTYPE 可能类似于 清单 5。
[html]
<!DOCTYPE MyDocs SYSTEM "filename.dtd">
[/html]
使用实体
实体 可以是文本短语或特殊字符。它们可以指向内部或外部。必须正确地声明和表示实体,以避免错误和确保正确显示。
您不能直接在内容中输入特殊字符。如果要在文本中使用符号,必须使用它的字符代码将它设置为实体。您可以将短语(比如公司名)设置为实体,然后就可以在内容中使用该实体。为了设置实体,必须先为它创建一个名称,然后将它输入到内容中,以 and 符号(&)开始,并以分号(;)结束 — 例如,&coname;。然后在 DOCTYPE 的方括号([])内部输入代码,如 清单 6 所示。这个代码识别表示实体的文本。
[html]
<!DOCTYPE MyDocs SYSTEM "filename.dtd" [ <!ENTITY coname "Rabid Turtle
Industries"
]>
[/html]
过滤字符串中的中文和数字
[php]
function getChinese($string,$encode="GBK") {
switch($encode){
case "GBK" :$codelength=2;break;
case "GB2312" :$codelength=3;break;
case "UTF-8" :$codelength=3;break;
case "UTF-16" :$codelength=4;break;
}
$tmpstr = ”;
$arr = array(1,2,3,4,5,6,7,8,9,0);
$strlen = strlen($string);
for($i=0; $i<$strlen; $i++) {
$str=substr($string, $i, 1);
$str1=trim($str);
if( ord($str)>0xA0 ){
$tmpstr.= substr($string, $i, $codelength);
$i = $i+$codelength-1;
}
}
return $tmpstr;
}
[/php]
英文字母和中文汉字在不同字符集编码下的字节数
英文字母:
字节数 : 1;编码:GB2312
字节数 : 1;编码:GBK
字节数 : 1;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 1;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE
中文汉字:
字节数 : 2;编码:GB2312
字节数 : 2;编码:GBK
字节数 : 2;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 3;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE