PHP灌水ロボット実現原理


実現原理:curlツールでアナログ登録し、関連インターフェースを呼び出してデータを送信して各種操作を行う.
知識点を身につける必要があります.
  • curlのPOST/GET動作
  • curlは、headerヘッダ情報
  • を送信する.
  • curlは、サービス端末から格納されたクッキー
  • を受け入れる.
  • curlはcookie
  • を送信します.
    コードモデル
  • curlのGET動作
    
    private function projectCollections(): array
    {
        $ts = microtime(true) * 1000;
        $api = "http://www.****.com/json/projectCollections?status=1&username={$this->userName}&limit=1&projectID={$this->projectID}&ts=" . $ts;   //API  
    
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $api);
        curl_setopt($curl, CURLOPT_HEADER, 0);//       
        curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookie); //  Cookie           
        curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie); //  cookie  
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_REFERER, "http://www.***.com/details/v5?id={$this->projectID}&isView=true");
        curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36");
        $json = curl_exec($curl);
        curl_close($curl);
    
        \Log::error(var_export($json, true));
        return json_decode($json, true);
        //{"meta":{"total":"0","start":"1","size":"0"},"data":[]}
    }
  • curlのPOST操作
  • //  
        private function addCollection()
        {
            $api = "http://www.****.com/sjc/api/project/collection/add";
    
            $postData = [
                'id' => (string)$this->projectID,
            ];
            $data = json_encode($postData);
            $length = strlen($data);
    
            $headers = [
                //'Origin:http://www.ilab-x.com',
                //'Host:www.ilab-x.com',
                "Content-type: application/json",
                'Content-Length: ' . $length,
            ];
            \Log::error(var_export($postData, true));
            \Log::error(var_export($data, true));
    
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $api);
            curl_setopt($curl, CURLOPT_HEADER, 0);//       
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookie); //  Cookie           
            curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie); //  cookie  
            curl_setopt($curl, CURLOPT_POST, 1);//post    
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//  ,    json  
            curl_setopt($curl, CURLOPT_REFERER, "http://www.****.com/details/v5?id={$this->projectID}&isView=true");
            curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36");
            curl_setopt($curl, CURLOPT_ENCODING, 'deflate');
    
            $json = curl_exec($curl);
            curl_close($curl);
            \Log::error(var_export($headers, true));
            \Log::error(var_export($json, true));
            return json_decode($json, true);
        }