[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

*/


             
發佈了24 篇原創文章 · 獲贊 5 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章