//get post request関数をシミュレートします /* 関数の説明: 関数: リクエストメソッドはget、post、cookieです。送信できるものは、Cookiefile ファイルを保存します パラメーター: $url-----リクエスト URL $referer---ソース URL $postdata----------投稿リクエストのデータ、取得リクエストの '' $cookie- --------送信されたクッキー $cookiefile-----保存されたクッキーファイル 戻り値: 取得したソースコードを返す */ function request($url,$referer='',$postdata= ' ',$cookie='',$cookiefile=''){ //ヘッダー設定 $header=''; $header.="Content-Type: application/x-www-form-urlencodedrn";/ / コンテンツ リクエスト タイプ $header.="ユーザー エージェント: Mozilla/4.0 (互換性; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0 .30729; Media Center PC 6.0)rn";//ブラウザフィールド $header.="Referer:".$referer."rn";//ソースアドレスを設定します $header .= "Cookie:".$ cookie ; //Cookie を設定します。デフォルトでは空です //リクエストメソッド get post、$postdata を渡します 空---get、空でない----post if($postdata=='')$method='GET '; else $method='POST'; //ストリームの作成に使用する配列を定義します $opts=array(); $opts['http']=array('method'=>$method, 'header'= >$header,'content'=>$postdata); //ストリームを生成 $context=stream_context_create($opts); //リクエストを送信してソースコードを取得 $yuanma=file_get_contents ($url,false,$ context); //$cookiefile が空でない場合、Cookie をファイルに保存する必要があるかどうか if($cookiefile!=''){ echo 'Cookie を保存する必要がある //保存したファイルが存在するかどうかを判断 Create if(!file_exists($cookiefile)){ file_put_contents($cookiefile,''); } //Cookieを取得して保存 $response =implode("rn",$http_response_header); //通常のマッチング Cookie を使用する $zengze="/Set-Cookie:(.*?)rn/"; preg_match_all($zengze,$response,$cookie_arr); //一致するものがあったので保存します if(!empty($cookie_arr) [1])){ $cookiestr=implode(';',$cookie_arr[1]); file_put_contents($cookiefile,$cookiestr ); echo 'Cookie が正常に保存されました '; } else echo '一致する Cookie がありません '; }//end if($cookiefile!='') //ソース コードに戻る return $yuanma; }//関数リクエストの終了($url,$referer,$postdata, $cookie,$cookiefile)
//現在のスクリプトURLを取得する function GetCurUrl() { if(!empty($ _SERVER["REQUEST_URI"])) { $scriptName = $_SERVER["REQUEST_URI" ]; $nowurl = $scriptName; else { $scriptName = $_SERVER["PHP_SELF"]; empty($_SERVER["QUERY_STRING"])) { $nowurl = $scriptName; else { $nowurl = $scriptName."?".$_SERVER["QUERY_STRING"] } } return $nowurl; }
//現在のファイル名を取得します $nowurl=GetCurUrl (); //echo $nowurl; //送信されていない場合のフォーム出力 if(!isset($_POST[ 'qq'])){ echo ' '; die(); }
/* パラメータの説明を送信します: $_POST['qq']-- -User QQ$_POST['g_tk']--このパラメータを取得するには、非常に重要です。 g_tk=1276354485 は、公開時に送信された投稿アドレスの後に呼び出されます。 POST http://b1.qzone.qq g_tk=1276354485 in .com/cgi-bin/blognew/blog_add?g_tk=1276354485 $_POST['title']- --記事のタイトル、空であってはなりません $_POST['content']---記事のコンテンツ、空であってはなりません Empty */
header('Content-Type:text/html;charset=gb2312'); set_time_limit(0); //ob_end_clean(); //ob_start();
//Cookie ファイルを取得します。作成は行われず、プログラムを終了します $cookiefile=dirname(__FILE__).'qq_cookie.txt'; if(!file_exists($cookiefile)){ echo 'qq_cookie.txt は実行します存在しません、自動的に作成します。キャプチャした Cookie を入力してください '; file_put_contents($cookiefile,''); die('Program exit'); } //存在します、Cookie を読み取ります else{ $ cookie=file_get_contents ($cookiefile);//ログイン cookie //$cookie=urlencode($cookie); } //echo 'cookie:'.$cookie.' ';
//Constitute公開ページ、投稿データなどの重要な情報 //qq番号 if(empty($_POST['qq'])||preg_match('/[^0-9]/is',$_POST['qq' ]))die ('qq 番号が間違っています。数字でなければなりません'); else $qq=$_POST['qq'];//qq 番号 if(empty($_POST['g_tk'])||preg_match ('/[^ 0-9]/is',$_POST['g_tk']))die('重要なポストパラメータ g_tk は不正であり、数値でなければなりません。キャプチャされたパケットの値を使用してください'); $g_tk=$_POST['g_tk'] ;
$title=empty($_POST['title'])?die('タイトルを空にすることはできません'):$_POST['title'];//記事タイトル $content=empty($_POST['content' ])?die('コンテンツは空であってはなりません'):$_POST['content'];//コンテンツ
$category='個人日記';//カテゴリー $fabiao='http://b1.qzone.qq .com/cgi-bin/blognew/blog_add?g_tk='.$g_tk;//投稿処理ページ $referer='http://ctc.qzs.qq .com/qzone/v5/toolpages/fp_gbk.html' ;//ソースページ $r1='http://user.qzone.qq.com/'.$qq.'/infocenter';//アクセス元のリストpage $postdata='uin='.$qq. '&category='.urlencode($category).'&title=".urlencode($title)."&content='.urlencode($content).'&html=' .urlencode(' ').'&tweetflag=0&cb_autograph=1&topflag=0&needfeed=0&g_tk='.$g_tk.'&_fp_refer=http%3A %2F%2Fctc.qzs.qq.com%2Fqzone% 2Fnewblog%2Fv5%2Feditor.html%3Fsource%3D1%7Chttp%3A%2F%2Fctc.qzs.qq.com%2Fqzone%2Fnewblog%2Fv5%2Feditor.html%3Fsource %3D1%3Chttp%3A%2F%2Fuser.qzone. qq.com%2F'.$qq.'%2Fmain';//投稿データ //$postdata=urlencode($postdata); //echo $postdata ; //リクエストを送信してソースコードを取得します $yuanma= request($fabiao,$r1,$postdata,$cookie,''); if(strpos($yuanma,'公開成功'))echo $ title.' 正常に公開されました '; else echo '正常に公開されました 失敗: 右クリックしてソース コードを表示すると、特定のエラー '.$yuanma;
?>
php スクリプトが表示されます: 名前を保存する必要があることに注意してください。これは自動的に認識されます。qq_fabiao.php という名前を付け、送信アドレスを設定します。Cookie ファイル qq_cookie.txt は、ログインを渡すためにパケット キャプチャによって取得されたログイン Cookie のスペースを埋める必要があります。 qq_cookie.txt は php ファイルと同じディレクトリにあります
/* Submission パラメータの説明: $ _POST['qq']---User QQ $_POST[' g_tk'] -- このパラメータを取得するには、公開時に送信された投稿アドレスの後に呼び出される g_tk=1276354485 を取得する必要があります (://b1.qzone.qq の Road POST http g_tk=1276354485)。 com/cgi-bin/blognew/blog_add?g_tk=1276354485
$_POST['title']---記事のタイトル、空ではありません $ _POST['content']---記事のコンテンツ、空にすることはできません空
|