ホームページ  >  記事  >  バックエンド開発  >  ユーザーが QQ スペースに記事を自動的に公開することを PHP がシミュレートする手順

ユーザーが QQ スペースに記事を自動的に公開することを PHP がシミュレートする手順

WBOY
WBOYオリジナル
2016-06-13 12:18:43841ブラウズ

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

ここでは、PHP を使用してログインと QQ スペースへの記事の送信をシミュレートする簡単なプログラムを示します。必要な友達はそれを参照したり、改良したりできます。ご意見をいただけますか? コードは次のとおりです:

[php] view plaincopy

  1. //取得をシミュレートする投稿リクエスト関数 http://www.lai18.com
  2. /*
  3. 機能の説明:
  4. 機能: リクエスト メソッドは、取得、投稿、送信可能な Cookie、および保存された Cookie ファイルを使用できます
  5. パラメータ: $url-----リクエスト URL $referer---ソース URL $ postdata- --------投稿リクエストに使用されるデータ、取得リクエストの ''
  6. $cookie--------送信済み cookie $cookiefile-----保存済み cookiefile
  7. 戻り値: 取得したソースコードを返す
  8. */
  9. request(
  10. $url
  11. , $referer=''$postdata=''$cookie='' ,$cookiefile=''){
  12. //ヘッダー設定
  13. $header=
  14. ''
  15. ; $header.="Content-Type: application/x-www -form-urlencodedrn"; //コンテンツリクエストタイプ
  16. $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;rn";//ブラウザフィールド
  17. $header.="リファラー:" .$referer
  18. .
  19. "rn";//送信元アドレスを設定します
  20. $header .= "Cookie:".$cookie
  21. //Cookie を設定します。デフォルトでは空です
  22. //リクエストメソッド get post, pass $postdata empty---get,空でない----post
  23. if($postdata=='' )
  24. $method
  25. ='GET';
  26. else $method='POST';
  27. //ストリームの作成に使用する配列を定義します
  28. $opts=array
  29. ();
  30. $opts['http'
  31. ]=
  32. array('メソッド'=> $method,'header'=>$header,'content' =>$postdata); > //ストリームを生成
  33. $context=stream_context_create($opts
  34. );
  35. // リクエストを送信し、ソースを取得コード ($url,false,$context
  36. ); 🎜>
  37. // $cookiefile が空でない場合、Cookie をファイルに保存する必要があるかどうか
  38. if($cookiefile!=''){
  39. エコー '必要Cookie を保存する
    '
  40. ; >//保存されたファイルが存在するかどうかを判断し、存在しない場合は作成します
  41. if
  42. (!
  43. file_exists($cookiefile)){
  44. file_put_contents
  45. (
  46. $cookiefile,'' );
  47. }
  48. //Cookie を取得して保存します
  49. $response=implode("rn",$http_response_header);
  50. // 通常のマッチング Cookie を使用する
  51. $zengze="/Set-Cookie : (.*?)rn/";
  52. preg_match_all ($zengze$response$cookie_arr); 🎜>//一致するものがあり、保存します
  53. if
  54. (!emptyempty($cookie_arr[1])){
  55. $cookiestr=implode(';',$cookie_arr[1]);
  56. file_put_contents($cookiefile, $cookiestr);
  57. 'Cookie が正常に保存されました'
  58. ; } >else echo
  59. '一致する Cookie がありません
    '
  60. }
  61. //end if($cookiefile!='')
  62. //ソースコードに戻る return $yuanma
  63. 🎜>
  64. }//関数リクエストの終了($url,$referer,$postdata,$cookie,$cookiefile)
  65. // 現在のスクリプト URL を取得します
  66. 関数 GetCurUrl()
  67. {
  68. if(!emptyempty($_SERVER["REQUEST_URI"]))
  69. 🎜>
  70. $scriptName
  71. =
  72. $_SERVER["REQUEST_URI"
  73. ];
  74. $nowurl
  75. =
  76. $scriptName;
  77. 🎜> else
  78. >{
  79. $scriptName = $_SERVER["PHP_SELF"
  80. ];
  81. if(emptyempty(
  82. $_SERVER
  83. ["QUERY_STRING" ]))
  84. {
  85. = $scriptName; else
  86. {
  87. $nowurl = $scriptName ."?".$_SERVER
  88. [
  89. "QUERY_STRING"] 🎜>
  90. >
  91. }
  92. return
  93. $nowurl ;
  94. }
  95. >//現在のファイル名を取得します
  96. $nowurl=GetCurUrl (); 🎜>
  97. //echo $nowurl; >
  98. 🎜>//送信されていない場合のフォーム出力
  99. if (!isset(
  100. $_POST
  101. ['qq'])){
  102. echo '
    .$nowurl .'"> qq番号:"テキスト" 名前="qq">> br>
  103. g_tk:"text" name= "g_tk">
  104. タイトル: " text"
  105. name="title">
    🎜>Content:"テキスト" name="コンテンツ"
    >
  106. "submit" value="記事を公開" >
  107. >
  108. 死ね >
  109. }
  110. >/*
  111. 送信パラメータの説明:
  112. $_POST['qq']---ユーザー QQ
  113. $_POST['g_tk'] -- このパラメータを取得するには、送信された投稿アドレスの後に呼び出される公開時刻 g_tk=123456789 を取得する必要があります。
  114. 道路ポスト < ;a href="g_tk=123456789" target= "_blank">http://b1.qzone.qq g_tk=123456789 .com/cgi-bin/blognew/blog_add?g_tk=123456789
  115. $_POST['title']---記事のタイトル、空ではありません
  116. $_POST['content']---記事のコンテンツ、空ではありません
  117. */
  118. header('Content-Type:text/html;charset=gb2312'
  119. );
  120. set_time_limit(0); 🎜>//ob_end_clean(); 🎜>
  121. ();
  122. >
  123. //Cookie ファイルを取得します。作成は行われず、プログラムを終了します
  124. $cookiefile=dirname(__FILE__).'qq_cookie.txt';
  125. $cookiefile)){
  126. echo 'qq_cookie.txt は存在​​しません。自動的に作成されます。キャプチャした Cookie を入力してください
    ';
  127. file_put_contents( $cookiefile
  128. ,
  129. ''); 'プログラム終了');
  130. // 存在します、Cookie を読み取ります
  131. else{
  132. $cookie=file_get_contents($cookiefile);//ログイン cookie
  133. //$cookie=urlencode( $クッキー);
  134. }
  135. //echo 'cookie:'.$cookie.'
    '; >
  136. //掲載ページ、投稿データ等を構成する重要な情報
  137. //qq 番号
  138. if (emptyempty( $_POST['qq'])||preg_match('/[^0-9]/is',$_POST ['qq']))死ぬ('qq 番号は数字でなければなりません'); >
  139. else
  140. $qq
  141. =$_POST['qq']; / /qq号 >if(emptyempty($_POST['g_tk']) ||preg_match('/[ ^0-9]/is',$_POST['g_tk']))死ぬ
  142. (
  143. 'ポスト重要パラメータ g_tk は有効ではありません。数値でなければなりません。キャプチャされたパケットの値を使用してください');
  144. >$_POST['g_tk'] > $title=emptyempty($_POST ['title'])?死ぬ ('タイトルは空であってはなりません'):$_POST['タイトル'];
  145. //記事のタイトル
  146. $content=emptyempty(
  147. $_POST
  148. ['content']) ?
  149. die
  150. ('コンテンツは空であってはなりません'):$_POST ['content'];//コンテンツ 🎜> $category
  151. =
  152. '個人日記'; //カテゴリ
  153. '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';//ソース ページ
  154. $r1
  155. ='http://user.qzone.qq.com/'.
  156. $qq
  157. .'/infocenter';//アクセス元ページの一覧表示
  158. $postdata='uin='.$qq.'&category='.urlencode($category).'&title='.urlencode($title).'&content='.urlencode($content).'&html='.urlencode('
    '.$content.'< ;/div>').'&tweetflag=0&cb_autograph=1&topflag=0&needfeed=0&g_tk='.$g_tk.'&_fp_refer=http://ctc. qzs.qq.com/qzone/newblog/v5/editor.html?source=1|http://ctc.qzs.qq.com/qzone/newblog/v5/editor.html?source=1.$qq.'/main';//postデータベース
  159. //$postdata=urlencode($postdata); 
  160. //echo $postdata; 
  161. //発信请求、获取源码
  162. $yuanma=request($fabiao,$ r1$postdata$cookie'');   
  163. if(strpos($yuanma,'発行表成功')) echo $title.' 発行表成功
    ';   
  164. else echo '公開失败:右键查看源码、特定の错误を閲覧できます' .$yuanma;   
  165. ?> ;  

代码仅提供参考,成功率有待大家的验证

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。