`
hereson
  • 浏览: 1449782 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

自动登录DISCUZ,发帖的代码(部分)

    博客分类:
  • vbs
阅读更多

class Robot
    
{
        
/**//// attributes
        // cookies
        private CookieCollection CkCollection = null;
        
// request and response
        private HttpWebRequest SparkRequest = null;
        
private HttpWebResponse SparkResponse = null;
        
// some url
        private string LoginUrl = null;
        
private string ReplyUrl = null;

        
// constructer
        public Robot()
        
{
            CkCollection 
= new CookieCollection();
        }


        
// logining
        public string Login(string url, string usr,string pass)
        
{
            
string Return = null;
            
this.LoginUrl = url;
            
// may be I should add a functin for create string
            string loginstr = "formhash=3bd8bc0a&referer=index.php&loginmode=&styleid=&cookietime=2592000&loginfield=username&username=" + usr;
            loginstr 
+= "&password=" + pass;
            loginstr 
+= "&questionid=0&answer=&loginsubmit=提 交";
            loginstr 
= EncodePost(loginstr);
            
byte[] replybyte = Encoding.UTF8.GetBytes(loginstr);
            
            
try
            
{
                CookieContainer sparkc 
= new CookieContainer();
                SparkRequest 
= (HttpWebRequest)WebRequest.Create(url);
                SparkRequest.CookieContainer 
= sparkc;
                SparkRequest.ContentType 
= "application/x-www-form-urlencoded";
                SparkRequest.Method 
= "POST";

                SparkRequest.ContentLength 
= replybyte.Length;
                Stream newStream 
= SparkRequest.GetRequestStream();
                newStream.Write(replybyte, 
0, replybyte.Length);
                newStream.Close();

                SparkResponse 
= (HttpWebResponse)SparkRequest.GetResponse();
                Stream dataStream 
= SparkResponse.GetResponseStream();
                StreamReader reader 
= new StreamReader(dataStream, Encoding.GetEncoding("gb2312"));
                Return 
= reader.ReadToEnd();

                
// check cookie
                foreach (Cookie temp in SparkResponse.Cookies)
                
{
                    
if (temp.Domain != "spark.cjlu.edu.cn")
                        temp.Domain 
= "spark.cjlu.edu.cn";
                }


                CkCollection 
= SparkResponse.Cookies;
            }

            
catch
            
{
                
return null;
            }

            
return Return;
        }


        
// overload
        /**//*
        public bool Login(string usr, string pass)
        {
            ;
        }
*/


        
// reply……
        public string Reply(string url,string formhash,string title,string content)
        
{
            SparkRequest 
= (HttpWebRequest)WebRequest.Create("http://spark.cjlu.edu.cn/bbs/"+url);
            SparkRequest.ContentType 
= "application/x-www-form-urlencoded";
            SparkRequest.Method 
= "POST";
            
//SparkRequest.Referer = "http://spark.cjlu.edu.cn/bbs/index.php";
            SparkRequest.KeepAlive = true;
            SparkRequest.AllowWriteStreamBuffering 
= false;

            
// set cookie
            CookieContainer cookieCon = new CookieContainer();
            SparkRequest.CookieContainer 
= cookieCon;
            SparkRequest.CookieContainer.Add(CkCollection);

            
// get post value
            string reply = EncodePost("formhash=" + formhash + "&subject=&usesig=1&message=" + content);
            
byte[] replybyte = Encoding.UTF8.GetBytes(reply);
            SparkRequest.ContentLength 
= replybyte.Length;
            Stream newStream 
= SparkRequest.GetRequestStream();
            newStream.Write(replybyte, 
0, replybyte.Length);
            newStream.Close();

            
// get response
            SparkResponse = (HttpWebResponse)SparkRequest.GetResponse();
            Stream dataStream 
= SparkResponse.GetResponseStream();
            StreamReader reader 
= new StreamReader(dataStream, Encoding.GetEncoding("gb2312"));
            
string tt = reader.ReadToEnd();

            reader.Close();
            dataStream.Close();
            SparkResponse.Close();

            
return tt;
        }


        
// encode the post string
        private string EncodePost(string input)
        
{
            
string output = null;
            Char[] reserved 
= '?''=''&' };
            
if (input != null)
            
{
                
int i = 0, j;
                
while (i < input.Length)
                
{
                    j 
= input.IndexOfAny(reserved, i);
                    
if (j == -1)
                    
{
                        output 
= output + HttpUtility.UrlEncode(input.Substring(i, input.Length - i), System.Text.Encoding.GetEncoding("gb2312"));
                        
break;
                    }

                    
string tt = HttpUtility.UrlEncode(input.Substring(i, j - i), System.Text.Encoding.GetEncoding("gb2312"));
                    output 
+= tt;
                    output 
+= input.Substring(j, 1);
                    i 
= j + 1;
                }

                
return output;
            }

            
else
                
return null;
        }

    }
 

分享到:
评论
1 楼 xhaopuj 2009-09-12  
请问如何使用呀?

相关推荐

    discuz论坛发帖器

    Discuz论坛发帖器是一款专为Discuz!社区平台设计的工具,用于自动化地在论坛上发布帖子。Discuz! 是一个广泛使用的开源论坛软件,它提供了强大的社区管理和用户交互功能。这款发帖器旨在帮助用户高效地进行信息分享...

    Discuz论坛批量发贴机

    适用于通用的Discuz论坛程序的批量发帖。可以设置一个帖子发布到N个论坛,或者N个帖子发布到一个论坛。全自动化的formhash获取,分类获取。多线程技术让发帖速度更快更好。 二、使用方法 1,打开批量发贴机,...

    快速发帖处自动排版插件 for Discuz! 7.2 GBK.rar

    "快速发帖处自动排版插件 for Discuz! 7.2 GBK" 是专门为 Discuz! 7.2 版本设计的一个增强功能插件,主要目标是提升用户在论坛上发布帖子时的效率和体验。 首先,我们来了解这个插件的主要功能。"自动排版" 是其...

    Discuz!代码,HTML代码大全.

    论坛系统中富文本编辑的功能性代码,它允许用户在发帖时使用特定的标签来实现文本格式化、插入图片、链接等操作。下面我们将详细解析给出的部分示例: 1. **加粗文本**:`[b]`和`[/b]`标签用来加粗文本,如`[b]Abc...

    去掉DZ自带首页发帖按钮 for discuz!.rar

    启用后,系统会自动识别并应用插件中的代码,实现移除首页发帖按钮的效果。 "去掉DZ自带首页发帖按钮for discuz! 插件"文件是实际的插件代码文件,可能包含PHP脚本和CSS样式,用于实现功能。PHP部分可能会覆盖或...

    每日发帖冠军自动积分奖励插件 for discuz!7.0.rar

    每日发帖冠军自动积分奖励for discuz!7.0 插件 1、每天自动查询当日发帖冠军,自动奖励论坛积分; 2、可以自由设置每天要奖励发帖的前几名; 3、自动发送论坛短消息通知发帖冠军; 4、系统每日会给论坛管理员...

    Discuz7.2 发贴API

    在Discuz7.2版本中,发贴API是重要的组成部分,它使得开发者能够构建第三方应用,实现自动化发布帖子的功能。 2. **发贴API**: 发贴API是Discuz提供的用于创建新主题的接口。它通常需要传递一系列参数,如板块ID...

    发帖机器人插件 for Discuz!7.0.rar

    标题 "发帖机器人插件 for Discuz!7.0.rar" 涉及的主要知识点是Discuz!论坛系统的插件开发与应用。Discuz!是一款非常流行的开源社区论坛软件,它允许用户通过安装不同的插件来扩展其功能。在这个特定的场景中,我们...

    php 模拟登录discuz2.0 论坛,发贴

    在PHP编程中,模拟登录(通常称为Web抓取或网页模拟操作)是一种常见的技术,用于自动化与网站的交互,例如登录论坛并进行发帖。在这个特定的场景中,我们需要使用PHP来模拟登录Discuz! 2.0论坛系统,然后在成功登录...

    网站和discuz登录、注册、退出的整合讲解

    你可以创建一个中间件,检查用户的session状态,如果用户在网站上已登录,则自动在Discuz!中设置相应的cookie。同样,当用户在Discuz!上登录后,也需要更新网站的session。确保两个系统的用户ID能对应起来,以便进行...

    Discuz 提供的编码转换工具

    【标题】"Discuz 提供的编码转换工具"涉及到的是网站论坛系统Discuz!中的一种常见操作,即字符编码的转换。在互联网发展的初期,不同的字符编码标准(如GBK和UTF-8)导致了跨平台、跨语言交流时的数据不兼容问题。...

    发帖时默认禁用url识别插件 for Discuz!7.0.rar

    3. 将"发帖时默认禁用url识别.txt"中的代码复制,然后在后台找到相应的插件安装或模板编辑部分进行添加。 4. 检查并确认设置,确保插件已经正确安装并激活。 5. 在插件管理界面,找到新安装的插件并进行配置,如设置...

    discuzX3.x免登陆发布接口

    这个接口主要适用于自动化数据采集和发布,例如与“火车头”这样的内容抓取工具配合使用,可以方便地将抓取到的信息自动导入到Discuz! 论坛的门户模块。 Discuz! X3.1至X3.4版本的免登录发布接口可能包含以下核心...

    管理Discuz!代码分析的收集整理[1] - 真功夫

    例如,系统会自动记录并分析用户的IP地址,识别异常登录行为,及时采取措施防止潜在的威胁。 #### 三、Discuz!代码优化与数据库管理 针对Discuz!的代码优化,重点在于提升程序运行效率和数据库访问速度。以下是几...

    易语言论坛发帖工具源码.7z

    论坛发帖工具通常是用于自动化在特定论坛发布帖子的软件,它可以节省用户手动填写表单的时间,提高效率。源码中可能包括了登录验证、页面解析、数据填充、提交表单等功能模块。通过分析这些源码,我们可以了解到网络...

    限制重复发帖和重复回帖插件 for Discuz!7.0.rar

    中的核心代码部分,可能包含与插件功能相关的PHP脚本,这些脚本会与论坛的主体逻辑交互,实现插件的功能。"templates"目录则包含模板文件,这些文件决定了插件在用户界面中的显示样式和交互元素,可能包括提示信息、...

    discuz!6.1GBK 版本论坛系统

    从创立之初即以提高产品效率为突破口,随着编译模板,语法生成内核,数据缓存和自动更新机制等独创或独有技术的应用,和坚固的数据结构及最少化数据库查询设计,使得 Discuz! 可以在极为繁忙的服务器环境下快速稳定...

    ASP.NET-[论坛社区]Discuz!NTv2.0正式版源代码(net1.1).zip

    这有助于学习ASP.NET编程技巧,尤其是对于社区应用的开发,如用户注册、登录、发帖、回帖、权限控制等常见功能的实现。 【社区论坛系统设计】 论坛社区系统的核心功能包括用户模块(注册、登录、个人信息管理)、...

    发帖子练级插件 for discuz 7.0.rar

    而“发帖子练级”插件则将这种等级提升与用户发帖行为更紧密地关联起来,用户每发表一个符合规则的帖子,都会获得一定的经验值,当经验值积累到一定值时,用户等级自动提升。这样的设计使得用户在享受分享知识、交流...

    Discuz!NT v2.6.1 源码包 bulid 090305

    "2.6rc未登录状态,导航栏显示了一些应该是登录后才显示的链接",已修正 email验证的问题,已修正 导航菜单链接问题,已修正 选用.NET 邮件发送程序 发送html代码,已修正 删除图片的问题,已修正 用户昵称的保留关键字有...

Global site tag (gtag.js) - Google Analytics