ホームページ > バックエンド開発 > PHPチュートリアル > PHP は QQ スペースに記事を自動的に公開するようユーザーをシミュレートします_PHP チュートリアル

PHP は QQ スペースに記事を自動的に公開するようユーザーをシミュレートします_PHP チュートリアル

WBOY
リリース: 2016-07-20 11:10:08
オリジナル
1039 人が閲覧しました

ここにあるのは、php を使用してログインをシミュレートし、必要な友人がそれを参照したり、改善のための提案をくれたりする記事を QQ スペースに送信する簡単なプログラムです。

コードは次のとおりです コードをコピー

//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 '

qq 番号:< ;br>

g_tk:

タイトル:

内容:

< ;input type="submit" value="記事を公開">

';
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']---記事のコンテンツ、空にすることはできません空


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444731.html技術記事ここにあるのは、PHP を使用してログインをシミュレートし、必要な友人がそれを参照したり、改善のための提案をくれたりする記事を QQ スペースに送信する簡単なプログラムです。 世代...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート