この記事の例では、ユーザーをシミュレートして 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 '
$_POST['g_tk'] -- このパラメーターを取得するには、公開時に送信された投稿アドレスの後に呼び出される g_tk=123456789 を取得する必要があります (POST http://b1.qzone.qq.com)。 /cgi- g_tk=123456789 bin/blognew/blog_add?g_tk=123456789