[JAVA VC] 短网址生成,HTTP请求,随想

关于 短网址:
        最近比较流行短网址,所谓短网址,就是通过算法把长网址转换成短字符,然后映射到短网址服务器缓存或数据库里。当访问短网址的时候自动从数据库里取出映射的原网址。
        这样一来短网址的好处就凸显出来,第一是短小好记,一次映射后就永久固定不变;
        第二就是发布微博/说说/状态的时候有字数限制,如果需要发布一个网址就会占据一半以上的字符量,转换成短网址可以剩余更多字符。或者在文章/贴吧/等等需要防屏蔽或不希望网址太长的地方,使用短网址只需要添加一点额外字符就可以了;
        第三因为通过了映射服务器,所以可以查看通过此短网址访问原网址的PV,UV等信息,达到统计的目的。一般是在短网址后加特定字符就可以进入后台管理,例如126.am的‘+’,goo.gl的'qz'(貌似是这个?)  //据说是
互联网上最稳定、最安全和最快速的网址缩短服务。谷歌的大牛 ( ̄︶ ̄)。
         By the way,貌似淘宝客这种东西的操作模式有点像,通过后台映射一个自己的淘宝客链接,类似的可以查看淘宝客链接的成交信息,从而给淘宝客分成盈利。至于各种美丽说,蘑菇街,返利网神马的,都是大淘宝客,搭建自己的平台,挂满淘宝客链接,他赚十元返你一元你还高兴得很,说明卖家赚的更多,可以推测这个东西成本价不知道多低,质量不晓得好差。。。所以淘宝就是个坑!天坑!远离淘宝,珍爱生命!咳咳。。扯远了。。虽然我也用淘宝,再打个广告——我的淘宝店铺,非淘宝客链接哟亲~ ~~~~~ http://rrurl.cn/l7Izvh
        盈所以快去抢注短网址吧~支持自定义~这个很爽诶~定义自己名字生日XXXXXX那啥的~~~~


短网址算法:
        其实短网址的算法跟我们倒没啥关系,因为没有服务器搭建算出来也没用,而且最重要的是这种签名拉~校验拉~算法拉~Hash拉~数学拉什么的。。。正常人是绝对不会感兴趣的。。。。。简而言之,就是通过MD5算法生成签名,然后划分为4段,再进行位运算,再进行字母表索引得到特定字符,最后会生成4个6位字符串,取其中任意一个作为当前短网址。至于重复的问题,首先这个算法算出来以后重复概率应该不高?(咳咳,其实我也不知道高不高,不过每位有26+26+10应该是重复概率很低咯),如果遇到重复的就取另外的字符串嘛,反正先到先得,先映射了的就不用管了。

短网址接口:
             对于开发者来说,只需要调用接口获得短网址服务器返回的信息就足够了。目前国内的很多门户网站基本都开通了短网址的服务。
            腾讯: url.cn
            网易:126.am
            新浪: t.cn
            人人:   rrurl.cn
            百度:dwz.cn
            第一家提供短网址服务的公司: tinyurl.cn
            一般短网址接口的使用方法都是POST参数到服务器,然后服务器返回信息。不过找了下貌似很多都没有开放接口,有的网站开放了接口但是参数里必须要求有用户登陆啊,用户授权神马的。所以还是萌萌的度娘好,完全免费调用,参数干净明朗。而且度娘之前就搞过短网址服务不过由于域名实在太长
,被称为网址最长的短网址服务。所以后来悄悄收购了dwz.cn的域名重新低调上线,真是难为度娘了。度娘不哭~~站起来X。
                  1、生成短网址
                             
请求:向dwz.cn/create.php发送post请求,发送数据包括url=长网址
                             返回:
json格式的数据
                                        1、status!=0 出错,查看err_msg获得错误信息(UTF-8编码)
                                        2、成功,返回生成的短网址 tinyurl字段                     2、自定义短网址
                         
请求:
向dwz.cn/create.php发送post请求,发送数据包括url=长网址&alias=自定义网址
                              返回:
json格式的数据
                                        1、Status!=0 出错,查看err_msg获得错误信息(UTF-8编码)

                                        2、成功,返回生成的短网址 tinyurl字段          


  HTTP请求:
          一般短网址接口的使用方法都是POST参数到服务器,然后服务器返回信息。不过找了下貌似很多都没有开放接口,有的网站开放了接口请求参数要求用户的授权或登陆。客户端(可以是浏览器,其他应用程序)与服务器进行交互,必须要发送请求,这里用的是HTTP协议。常用的一般是GET请求和POST请求,简单来说两种请求方式基本相同,都是提交数据到服务器。区别在于GET方法是通过URL来提交数据,服务器从收到的URL里解析数据,这样做从安全角度来讲要低一些,而且不能提交大量的数据。POST方法是通过加密的表单方式传送,所以数据量可以比较大且安全。像QQ空间,人人的访问应该就是发送的GET请求,从URL栏就可以直观看到相应的参数如帐号,当前目录是相册还是日志等等,而密码注册一类的都是POST请求。
                就实际代码来看,java的请求比较简单,一些脚本语言也应该比较简单。java里使用封装好的URL,URLCONNECTION可以轻松请求到数据。而VC就特别的麻烦(而且类种类繁多,参数繁多,步骤繁多,总而言之也是个天坑!)。
                1通过CInternetSession建立会话
                2、准备好各参数,数据报头部,里面包含协议方式,接收编码,请求方式等等
                3、通过
CHttpConnection建立连接
                4、通过
CHttpFile建立读写文件pfile
                5、 使用pfile来OpenRequest,SendRequest
                6、读取返回数据,关闭连接

                VC是天坑。。。。。还可以用其他API,WINHTTP包,TCP/IP。。。。不过每种都很复杂麻烦而且搅在一堆

JAVA 在网络方面确实很方便:


                 /*****************************
                 * 逸雨清风出品
                 * 淘宝店铺名:逸雨清风书屋,出售电子书,编程,解决电脑问题
                 * 新浪微博:仁寿府府尹
                 * CSDN:http://blog.csdn.net/xyydyyqf
                 * DATE: 2013-6-1
                 * 祝我儿童节快乐!
                 ******************************/
                import java.awt.datatransfer.Clipboard;
                import java.awt.datatransfer.StringSelection;
                import java.awt.event.ActionEvent;
                import java.awt.event.ActionListener;
                import java.awt.event.KeyAdapter;
                import java.awt.event.KeyEvent;
                import java.io.BufferedReader;
                import java.io.InputStreamReader;
                import java.io.PrintWriter;
                import java.net.URL;
                import java.net.URLConnection;
                import java.security.acl.Owner;
               
                import javax.swing.JButton;
                import javax.swing.JFrame;
                import javax.swing.JLabel;
                import javax.swing.JOptionPane;
                import javax.swing.JPanel;
                import javax.swing.JTextField;
                import javax.swing.SwingConstants;
               
                public class dwz extends JFrame implements ActionListener
                {
                    private static char[] shortdwz = new char[100];
                    private static char[]  line2;
                    private static String line;
                    private static char[] suitable;
                   
                    private JPanel panel;
                    private JButton btncreat,btnclear,btncopy;
                    private JLabel lbllong,lblshort,lblcopy,lblmyshort,lblhelp;
                    private JTextField txtlong;
                    private JTextField txtshort;
                    private JTextField txtmyshort;
                   
                    public dwz()
                    {
                        super("短网址生成器");
                        panel = new JPanel();
                        lbllong = new JLabel("原网址");
                        lblshort = new JLabel(" 短网址");
                        lblcopy = new JLabel("等待复制");
                        lblmyshort = new JLabel("自定义 http://dwz.cn/");
                        lblhelp = new JLabel("字母,数字,破折号");
                        txtlong = new JTextField(30);
                        txtshort = new JTextField(22);
                        txtmyshort = new JTextField(14);txtmyshort.setText("");
                        txtlong.setHorizontalAlignment(SwingConstants.LEFT);
                        txtshort.setHorizontalAlignment(SwingConstants.LEFT); //左对齐
                        btncreat = new JButton("生成");
                        btnclear = new JButton("清空");
                        btncopy = new JButton("复制网址");
                        panel.add(lbllong);panel.add(txtlong);
                        panel.add(lblmyshort);panel.add(txtmyshort);panel.add(lblhelp);
                        panel.add(lblshort);panel.add(txtshort);panel.add(btncopy);
                        panel.add(btncreat);panel.add(btnclear);panel.add(lblcopy);
                        txtlong.addKeyListener(new KeyEnterLisener());
                        txtmyshort.addKeyListener(new KeyEnterLisener());
                        btncreat.addActionListener(this);
                        btnclear.addActionListener(this);
                        btncopy.addActionListener(this);
                        this.add(panel);
                        this.setSize(400,165);
                        this.setLocationRelativeTo(null);
                        this.setResizable(false);
                    }
                    public void actionPerformed(ActionEvent e)
                    {
                        Object source = e.getSource();
                        if (source == btncreat)
                        {
                            if (txtmyshort.getText().equals(""))
                            txtshort.setText(Getdwz(txtlong.getText()));
                            else txtshort.setText(GetMydwz(txtlong.getText(),txtmyshort.getText()));
                        }
                        if (source == btnclear)
                        {
                            txtshort.setText("");
                            txtlong.setText("");
                            txtmyshort.setText("");
                            lblcopy.setText("等待复制");
                            line = null; line2 = null;
                        }
                        if (source == btncopy)
                        {
                             Clipboard clipboard = getToolkit().getSystemClipboard(); //获得系统剪切板
                             StringSelection stringSelection = new StringSelection(txtshort.getText());
                             clipboard.setContents(stringSelection,null);
                             lblcopy.setText("复制成功");
                        }
                    }
                    public class KeyEnterLisener extends KeyAdapter
                    {
                        public void keyPressed(KeyEvent e)
                        {
                            if (e.getKeyCode() == KeyEvent.VK_ENTER)
                                if (txtmyshort.getText().equals(""))
                                    txtshort.setText(Getdwz(txtlong.getText()));
                                    else txtshort.setText(GetMydwz(txtlong.getText(),txtmyshort.getText()));
                        }
                    }
                   
                    public static String Getdwz(String longwz)
                    {
                        try {
                            String strurl = "url="+longwz;
                            URL url = new URL("http://dwz.cn/create.php");   //伟大的度娘,无需用户登陆授权就可直接调用API
                            //URL url = new URL("http://126.am/api!shorten.action"); 网易的API必须另外要用户的key做参数,其他门户没有找到公开的API
                            URLConnection connection = url.openConnection();  //打开url连接
                            connection.setDoOutput(true); //设置为输出
                            PrintWriter out = new PrintWriter(connection.getOutputStream());
                            out.write(strurl); //写入短网址到PORT请求
                            out.flush();
                            out.close();
                            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                            while ((line = in.readLine())!= null)  //得到返回的信息
                            {
                                line2 = line.toCharArray();
                            }
                            for (int i=0;i<line2.length;i++)
                            if (line2[i] == 'h')
                                {
                                    int k=i,j;
                                    for (j=0;line2[k]!='"';j++)
                                    {
                                        if (line2[k] != '\\') shortdwz[j] = line2[k];
                                        else j--;
                                        k++;
                                    }
                                    suitable = new char[j];
                                    for (int temp=0;temp<j;temp++)
                                    suitable[temp] = shortdwz[temp];
                                    System.out.println(suitable);
                                    break;
                                }
                        } catch (Exception e) {
                            System.out.println("发送POST请求出现异常!" + e);
                            e.printStackTrace();
                        }
                        if (shortdwz[7]!='d' || shortdwz[8]!='w' || shortdwz[9]!='z')
                        {
                            JOptionPane.showMessageDialog(null,"原网址输入错误或无效!","错误",JOptionPane.ERROR_MESSAGE);
                            return null;
                        }
                        line =new String(suitable);
                        return line;
                    }   
                    public static String GetMydwz(String longwz,String myshort)
                    {
                        try {
                            String strmyurl = "url="+longwz+"&alias="+myshort;
                            URL url = new URL("http://dwz.cn/create.php");   //伟大的度娘,无需用户登陆授权就可直接调用API
                            URLConnection connection = url.openConnection();  //打开url连接
                            connection.setDoOutput(true); //设置为输出
                            PrintWriter out = new PrintWriter(connection.getOutputStream());
                            out.write(strmyurl); //写入短网址到PORT请求
                            out.flush();
                            out.close();
                            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                            while ((line = in.readLine())!= null)  //得到返回的信息
                            {
                                line2 = line.toCharArray();
                            }
                            for (int i=0;i<line2.length;i++)
                                if (line2[2] == 's' && line2[3] == 't' && line2[4] == 'a' && line2[5] == 't')
                                {
                                    JOptionPane.showMessageDialog(null,"哦豁,运气撇,被人捷足先登了\n这个短网址已经被定义过了或不合法,","哦豁",JOptionPane.ERROR_MESSAGE);
                                    return null;
                                }
                                else if (line2[2] == 'e' && line2[3] == 'r' && line2[4] == 'r')
                                {
                                    JOptionPane.showMessageDialog(null,"哦豁,运气撇,被人捷足先登了\n这个长网址已经映射其他短网址了,","哦豁",JOptionPane.ERROR_MESSAGE);
                                    return null;
                                }
                            else if (line2[i] == 'h' )
                                {
                                    int k=i,j;
                                    for (j=0;line2[k]!='"';j++)
                                    {
                                        if (line2[k] != '\\') shortdwz[j] = line2[k];
                                        else j--;
                                        k++;
                                    }
                                    shortdwz[j] = '\0';
                                    break;
                                }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        if (shortdwz[7]!='d' || shortdwz[8]!='w' || shortdwz[9]!='z')
                        {
                            JOptionPane.showMessageDialog(null,"原网址输入错误或无效!","错误",JOptionPane.ERROR_MESSAGE);
                            return null;
                        }
                        line =new String(shortdwz);
                        return line;
                    }
                   
                    public static void main(String[] args) throws Exception
                    {
                        new dwz().setVisible(true);
                    }
                }

               

VS10一如既往的天坑,尤其是调用系统API的时候:

                  //VC发送POST请求的时候始终有异常,暂未处理

             /*****************************
             * 逸雨清风出品
             * 淘宝店铺名:逸雨清风书屋,出售电子书,编程,解决电脑问题
             * 新浪微博:仁寿府府尹
             * CSDN:http://blog.csdn.net/xyydyyqf
              * DATE: 2013-6-2
             ******************************/
            #include "stdafx.h"
            #include "dwz.h"
            #include "afx.h"
            #include <afxinet.h>

            BOOL WINAPI Main_Proc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
            BOOL Main_OnInitDialog(HWND hWnd,HWND hWndFocus,LPARAM lParam);
            void Main_OnCommand(HWND hWnd,int id,HWND hwndCtl,UINT codeNotify);
            void Main_OnClose(HWND hWnd);
            char* Getdwz(CString longwz);
            char* Getmydwz(CString longwz,CString myshortwz);

            int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
            {
                DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAINDIALOG),NULL,Main_Proc);
                return 0;
            }
             BOOL WINAPI Main_Proc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
            {
            switch(uMsg)
                {
            //开始消息测试
            HANDLE_MSG(hWnd,WM_INITDIALOG,Main_OnInitDialog);
            HANDLE_MSG(hWnd,WM_COMMAND,Main_OnCommand);
            HANDLE_MSG(hWnd,WM_CLOSE,Main_OnClose);
            //结束消息测试
                    }
            return FALSE;
            }
             BOOL Main_OnInitDialog(HWND hWnd,HWND hwndFocus,LPARAM lParam)
                {
            //设置应用程序图标
            HICON hIcon = LoadIcon((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDI_ICON3));
                SendMessage(hWnd,WM_SETICON,TRUE,(LPARAM)hIcon);
                SendMessage(hWnd,WM_SETICON,FALSE,(LPARAM)hIcon);
            //添加初始化代码
               return TRUE;
                }

            //主窗口关闭
          void Main_OnClose(HWND hWnd)
            {
            EndDialog(hWnd,0);
            }
            //主窗口命令响应
            void Main_OnCommand(HWND hWnd,int id,HWND hwndCtl,UINT codeNotify)
            {
                switch(id)
                {
                case IDCREAT:
                        char  *longwz,*myshortwz,*shortwz;
                        ZeroMemory(longwz,sizeof(longwz));
                        ZeroMemory(myshortwz,sizeof(myshortwz));
                        ZeroMemory(shortwz,sizeof(shortwz));
                        GetDlgItemText(hWnd,IDC_LONG,longwz,sizeof(longwz));
                        GetDlgItemText(hWnd,IDC_MYSHORT,myshortwz,sizeof(myshortwz));
                        if (myshortwz == NULL)  shortwz = Getdwz(longwz);
                        else shortwz = Getmydwz(longwz,myshortwz);
                        SetDlgItemText(hWnd,IDC_SHORT,shortwz);
                    break;
                case IDCLEAR:
                        SetDlgItemText(hWnd,IDC_SHORT,"");
                        SetDlgItemText(hWnd,IDC_LONG,"");
                        SetDlgItemText(hWnd,IDC_MYSHORT,"");
                        break;
                case IDCOPY:
                    char* source;
                    GetDlgItemText(hWnd,IDC_SHORT,source,sizeof(source));
                    if(OpenClipboard(NULL))
                    {
                        /*HGLOBLA clipbuffer;
                        char *buffer;
                        EmptyClipboard();
                        clipbuffer=GlobalAlloc(GMEM_DDESHARE,source.GetLength()+1);
                        buffer=(char *)GlobalLock(clipbuffer);
                        strcpy(buffer,LPCSTR(source));
                        GlobalUnLock(clipbuffer);
                        SetClipboardData(CF_TEXT,clipbuffer);
                        CloseClipboard();*/
                    }
                    break;
                default:break;
                }
            }

            char* Getdwz(CString longwz)
            {
                char chHeader[128];
                char chData[128];
                char tChars[128];

                memset(tChars,0,128);
                CInternetSession session;
                CHttpConnection* pConnection=NULL;
                CHttpFile* pFile=NULL;
                INTERNET_PORT nPort=8080;

                strcpy(chHeader,"Content-Type: application/x-www-form-urlencoded");
                strcpy(chData,"url=");
                strcat(chData,longwz);

                pConnection = session.GetHttpConnection("http://dwz.cn",nPort);
                pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/create.php");
                pFile->SendRequest(chHeader,(DWORD)strlen(chHeader),(LPVOID *)chData,strlen(chData));
                pFile->Read(tChars,128);
                session.Close();

                char* shortdwz;
                ZeroMemory(shortdwz,sizeof(shortdwz));
                for (int i=0;i<sizeof(tChars);i++)
                    if (tChars[i] == 'h')
                    {
                        int k=i,j;
                        for (j=0;tChars[k]!='"';j++)
                        {
                            if (tChars[k] != '\\') shortdwz[j] = tChars[k];
                            else j--;
                            k++;
                        }
                        shortdwz[j] = '\0';
                        break;
                    }
                if (shortdwz[7]!='d' || shortdwz[8]!='w' || shortdwz[9]!='z')
                {
                MessageBox(NULL,"原网址输入错误或无效!","错误",MB_ICONINFORMATION|MB_OK);
                return NULL;
                }
                return shortdwz;    
            }    
            char* Getmydwz(CString longwz,CString myshortwz)
            {
                char chHeader[128];
                char chData[128];
                char tChars[128];

                memset(tChars,0,128);

                CInternetSession session;
                CHttpConnection* pConnection=NULL;
                CHttpFile* pFile=NULL;
                INTERNET_PORT nPort=8080;

                strcpy(chHeader,"Content-Type: application/x-www-form-urlencoded");
                strcpy(chData,"url=");
                strcat(chData,longwz);
                strcat(chData,"&alias=");
                strcat(chData,myshortwz);

                pConnection = session.GetHttpConnection("http://dwz.cn",nPort);
                pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/create.php");
                pFile->SendRequest(chHeader,(DWORD)strlen(chHeader),(LPVOID *)chData,strlen(chData));
                pFile->Read(tChars,128);
                session.Close();

                char* shortdwz;
                ZeroMemory(shortdwz,sizeof(shortdwz));
                for (int i=0;i<sizeof(tChars);i++)
                    if (tChars[2] == 's' && tChars[3] == 't' && tChars[4] == 'a' && tChars[5] == 't')
                    {
                        MessageBox(NULL,"哦豁,运气撇,被人捷足先登了\n这个短网址已经被定义过了或不合法,","哦豁",MB_ICONINFORMATION|MB_OK;
                        return NULL;
                    }
                    else if (tChars[2] == 'e' && tChars[3] == 'r' && tChars[4] == 'r')
                    {
                        MessageBox(NULL,"哦豁,运气撇,被人捷足先登了\n这个长网址已经映射其他短网址了,","哦豁",MB_ICONINFORMATION|MB_OK);
                        return NULL;
                    }
                    else if (tChars[i] == 'h')
                    {
                        int k=i,j;
                        for (j=0;tChars[k]!='"';j++)
                        {
                            if (tChars[k] != '\\') shortdwz[j] = tChars[k];
                            else j--;
                            k++;
                        }
                        shortdwz[j] = '\0';
                        break;
                    }
                    if (shortdwz[7]!='d' || shortdwz[8]!='w' || shortdwz[9]!='z')
                    {
                        MessageBox(NULL,"原网址输入错误或无效!","错误",MB_ICONINFORMATION|MB_OK);
                        return NULL;
                    }
                    return shortdwz;    
            }

                 


傲娇的伪生日自定义地址:http://dwz.cn/19930622  //java源代码与JVM下可执行JAR


随想 || 发神:
           
about mobile QQ2013:手机QQ最新版叫骂一片,不过除了骂点让人不爽意外,有两个功能倒确实挺牛叉的。像是文件传输,多客户端互传文件,这是要多牛叉的协议才能做到,手机上可能还要针对不同的机型,不晓得有没得抽象出来的包。还有一个功能就是聊天信息同步。当手机登陆服务器的时候,自动扫描当前在线的客户端,而且这些客户端的聊天信息都是同步到服务器上的,再由服务器统一下发比如最近一小时的记录到所有客户端。说明腾讯的服务器机制很牛叉,不晓得又是好多根头发好多杯咖啡泡出来的,真是企鹅中的战斗鸡。(不过这也同样说明聊天要河蟹 - - 腾讯把我们看得赤裸裸的,就连传个在线文件说不定他都有截取一份)
          
游戏外挂:说到外挂,不得不提易语言这种神奇的东西,这种传说中的东东貌似专门为外挂做后台,盗号,木马,病毒神马的都少不了它~~~一般外挂就是对指定进程的数据,内存进行操作。捕获了当前的进程,对它进行一些原本没有的操作。像找茬游戏外挂神马的,捕获它的进程,获取到游戏里的两幅图像,再根据图形算法,将图片划分为N块像素块,用各点像素值的和计算每块像素块的值,再比较两张图片不同的像素块,当差别超过预设的误差范围,则可以判定当前像素块不同,通过写操作绘图对用户做出提示。至于N的值和预设的误差值是多少要看具体情况修改。像连连看这种估计也差不多,可能要用到Windows钩子,还要进行鼠标模拟操作。
          
网络协议:一般百度的时候URL里就有wd=“搜索的值“,应该就是GET请求的数据直接通过URL传送,然后百度服务器进行响应返回这个页面。其他很多地方的网址都有这样的效果,或是XML的解析。腾讯用的是UDP的协议,所以有离线的功能咪。
          
云:好流行啊好流行,都在做云,不管是搞存储的还是搞安全的,不过为毛感觉就是以前的服务器,换了个马甲就爬出来装新造势咪。不过这些网站真心好有钱就是了,随随便便一个用户就是免费送10个G,●﹏● ,虽然我不用。。。云来云去还不是要用网速下,就是服务器网盘嘛,慢得很。
         
自动回复脚本:这个好啊!其实我超想搞这个的,像是现在的微博,人人,小黄鸡,贴吧都是这种脚本。人人的应该是专门注册一个帐号,然后关注了很多公共主页,然后搭建一个个人电脑服务器,当服务器电脑开启的时候,上传到服务器上的脚本就开始工作,用监听的方式注意所有主页,一旦有主页有消息更新就回复内容抢沙发,至于回复的内容还可以随机值/调用其他接口/固定值/圈人。至于微博就是那些打广告的,自动扫描所有用户,类似一个爬虫脚本吧,蔓延在整个微博,设定好了关注的关键字,像是"减肥、痘痘、淘宝"什么的,就自动给该用户留言打广告,广告内容根据抓取的该用户关键字而不同。贴吧应该也差不多,不过要解决验证码的问题。小黄鸡应该是有一个数据库,呃。。。肿么让我想起了清华大学的机器人小图,跟小黄鸡应该是差不多的吧,属于自然语言处理。通过算法分析用户输入的语句语境,然后收集用户回复的话加入到数据库,当有相同类似的对话的时候就可以调用收集到的话了,很高端的样子腻~还是多客户端的腻亲~~而且数据选择多了还可以随机选择一种回复使得回复不那么单调。
             好吧 ( ̄▽ ̄) 所谓随想就是随便想的,完全木有理论依据的,认真你就输了,哦嚯嚯嚯。当随笔记下来了,以后有实际想法的再去一一实践验证。



 /*

******逸雨清风 出品

******http://blog.csdn.net/xyydyyqf

*/


             
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyqfyyqf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值