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

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

WBOY
WBOYオリジナル
2016-07-13 10:10:00777ブラウズ

php は、ユーザーが QQ スペースに記事を自動的に公開する方法をシミュレートします。

この記事の例では、ユーザーをシミュレートして QQ スペースに記事を自動的に公開する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

ここにあるのは、ログインと QQ スペースへの記事の送信をシミュレートするための PHP を使用する簡単なプログラムです。必要な友人はそれを参照したり、改善のための提案を提供したりできます。
コードは次のとおりです。

コードをコピーします コードは次のとおりです:
// get post リクエスト関数をシミュレートします
/*
機能の説明:
機能: リクエストメソッドは取得、投稿、送信可能なクッキー、保存されたクッキーファイルが可能です
パラメータ: $url-----リクエストURL $referer---ソースURL $postdata----------投稿リクエストのデータ、''は取得リクエスト用です
$cookie-----送信されたクッキー $cookiefile-----保存されたクッキーファイル
戻り値: 取得したソースコードを返す
*/
関数リクエスト($url,$referer='',$postdata='',$cookie='',$cookiefile=''){
//ヘッダー設定
$ヘッダー=''; $header.="Content-Type: application/x-www-form-urlencodedrn";//コンテンツリクエストタイプ
Media Center PC 6.0)rn";//ブラウザフィールド
$header.="Referer:".$referer."rn";//送信元アドレスを設定します
$header .= "Cookie:".$cookie // Cookie を設定します。デフォルトでは空です
; //リクエストメソッド get post, pass $postdata empty ---get, non-empty----post
if($postdata=='')$method='GET'; それ以外の場合は $method='POST'; //ストリームの作成に使用される配列を定義します
$opts=配列(); $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 を保存する必要があります
'; //保存したファイルが存在するか作成しないかを判断します
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(!emptyempty($cookie_arr[1])){
$cookiestr=implode(';',$cookie_arr[1]); file_put_contents($cookiefile,$cookiestr); echo 'Cookie が正常に保存されました
'; }
else echo '一致する Cookie がありません
'; }//end if($cookiefile!='')
//ソースコードに戻る
$yuanma を返します。 }//関数リクエストを終了($url,$referer,$postdata,$cookie,$cookiefile)
// 現在のスクリプト URL を取得します
関数 GetCurUrl()
{
if(!emptyempty($_SERVER["REQUEST_URI"]))
{
$scriptName = $_SERVER["REQUEST_URI"]
$nowurl = $スクリプト名
}
それ以外は
{
$scriptName = $_SERVER["PHP_SELF"]
if(空の空($_SERVER["QUERY_STRING"]))
{
$nowurl = $スクリプト名
}
それ以外は
{
$nowurl = $scriptName."?".$_SERVER["QUERY_STRING"]
}
}
$nowurl を返します。 }

// 現在のファイル名を取得します
$nowurl=GetCurUrl(); // $nowurl をエコーし​​ます。
//送信されない場合のフォーム出力
if(!isset($_POST['qq'])){
echo '
qq 番号:
g_tk:
タイトル:
コンテンツ:
'; 死ぬ(); }

/*
送信パラメータの説明:
$_POST['qq']---ユーザー QQ
$_POST['g_tk'] -- このパラメーターは非常に重要です。このパラメーターを取得するには、公開時に送信された投稿アドレスの後に呼び出される g_tk=123456789 を取得する必要があります。 投稿 http://b1.qzone.qq.com/cgi-bin/blognew/blog_add?g_tk=123456789 g_tk=123456789
$_POST['title']---記事のタイトル、空にすることはできません
$_POST['content']---記事のコンテンツ、空にすることはできません
*/

header('Content-Type:text/html;charset=gb2312'); set_time_limit(0); //ob_end_clean(); //ob_start();
// Cookie ファイルを取得し、存在しない場合は作成し、プログラムを終了します
$cookiefile=ディレクトリ名(__FILE__).'qq_cookie.txt'; if(!file_exists($cookiefile)){
echo 'qq_cookie.txt は存在​​しません。キャプチャされた Cookie を入力してください
; file_put_contents($cookiefile,''); die('プログラム終了'); }
//存在します、クッキーを読み取ります
他{
$cookie=file_get_contents($cookiefile);//ログイン Cookie
//$cookie=urlencode($cookie)
}
//エコー 'cookie:'.$cookie.'
';
//出版ページや投稿データなどを構成する重要な情報
//qq 番号
if(emptyempty($_POST['qq'])||preg_match('/[^0-9]/is',$_POST['qq']))die('qq 番号が間違っています。数字でなければなりません'); else $qq=$_POST['qq'];//qq 番号
if(emptyempty($_POST['g_tk'])||preg_match('/[^0-9]/is',$_POST['g_tk']))die('post 重要なパラメータ g_tk は不正であり、番号、キャプチャされたパケットの値を使用してください'); $g_tk=$_POST['g_tk']

$title=emptyempty($_POST['title'])?die('タイトルを空にすることはできません'):$_POST['title'];//記事タイトル
$content=emptyempty($_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';//アクセス元ページの一覧表示
$postdata='uin='.$qq.'&category='.urlencode($category).'&title='.urlencode($title).'&content='.urlencode($content).'&html='.urlencode ('
'.$content.'
').'&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); // $postdata をエコーし​​ます。 //リクエストを送信してソースコードを取得します
$yuanma=リクエスト($ファビアオ,$r1,$postdata,$cookie,''); if(strpos($yuanma,'正常に公開されました'))echo $title.' 正常に公開されました
'; else echo '公開に失敗しました: 右クリックしてソース コードを表示すると、特定のエラーが表示されます'.$yuanma; ?>


php スクリプト:
名前を保存する必要があることに注意してください。これは自動的に認識されます。私はそれに qq_fabiao.php という名前を付け、送信アドレスを設定します。 Cookie ファイル qq_cookie.txt には、次で取得したスペースのログイン Cookie を入力する必要があります。ログイン検証に合格するためのパケット キャプチャ、qq_cookie.txt は php ファイルと同じディレクトリにあります。


送信パラメータの説明:

$_POST['qq']---ユーザー QQ $_POST['g_tk'] -- このパラメーターを取得するには、公開時に送信された投稿アドレスの後に呼び出される g_tk=123456789 を取得する必要があります (POST http://b1.qzone.qq.com)。 /cgi- g_tk=123456789 bin/blognew/blog_add?g_tk=123456789

$_POST['title']---記事のタイトル、空にすることはできません

$_POST['content']---記事のコンテンツ、空にすることはできません

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

http://www.bkjia.com/PHPjc/939414.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/939414.html技術記事 PHP は QQ スペースで記事を自動的に公開するユーザーをシミュレートします。 この記事では、QQ スペースで記事を自動的に公開するユーザーをシミュレートする PHP の例について説明します。参考のためにみんなで共有してください。具体的な分析は以下の通りです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。