ホームページ >バックエンド開発 >PHPチュートリアル >QQ スペースへの PHP シミュレートされたログインの例

QQ スペースへの PHP シミュレートされたログインの例

WBOY
WBOYオリジナル
2016-07-25 08:53:102147ブラウズ
  1. include "include/http.class.php";
  2. $http = new http(1);
  3. $html = $http->get('http://check.ptlogin2 .qq.com/check?uin=QQ账号&appid=15004501&r='.Math.rand(),1);
  4. $pattern = '/'.preg_quote("ptui_checkVC('0','",'/') .'(.*?)'.preg_quote("',",'/').'/i';
  5. preg_match ( $pattern,$html, $matches);
  6. $yzm = $matches[1];
  7. $pattern = '/'.preg_quote("'x",'/').'(.*?)'.preg_quote("');",'/').'/i';
  8. preg_match ( $pattern ,$html, $matches);
  9. $yzmt = 'x'.$matches[1];
  10. $http -> get("http://ptlogin2.qq.com/login?u=QQ账号&p=".jspassword("QQ密码",$yzm,$yzmt)."&verifycode=".$yzm."&aid=15004501&u1= http%3A%2F%2Fctc.qzs.qq.com%2Fac%2Fqzone%2Flogin%2Fsucc.html%3Fpara%3Dtoolbar&h=1&ptredirect=0&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert&mibao_css=&t=1&g=1");
  11. 関数jspassword($p, $vc, $vt) {
  12. $p = strtoupper(md5($p));
  13. for ($i = 0; $i return strtoupper(md5(strtoupper(md5(hex2asc($temp) . hex2asc($vt))) . $vc));
  14. }
  15. function hex2asc($str) {
  16. $str = join('',explode('x', $str));
  17. for ($i = 0;$i return $data;
  18. }
复制代码

以下に示すように: QQ スペースへの PHP シミュレートされたログインの例

http.class.php ファイルのコード:

  1. // +------------------------------------- ---------------------------------
  2. // | ThinkPHP [ 考えるだけでできる ]
  3. // +-------------------------------------- ----------------------------------
  4. // |著作権 (c) 2009 http://thinkphp.cn 無断複写・転載を禁じます
  5. // +---------------------------- ----------------------------------------
  6. // |ライセンス済み ( http://www.apache.org/licenses/LICENSE-2.0 )
  7. // +---------------------------- ------------------------------------------
  8. // |作成者: liu21st
  9. // +------------------------------------- -----------------------------------
  10. // $Id$
  11. /**
  12. +------------------------------------------------ ----------------------------------
  13. * Http ツール クラス
  14. * 一連の Http メソッドを提供します
  15. +- ---------------------------------------------------- ---- -----------------------
  16. * @category ORG
  17. * @package ORG
  18. * @subpackage Net
  19. * @author liu21st * @version $Id$
  20. +------------------------------------- ----------------------------------------------------
  21. * /
  22. class Http
  23. {//类定义开開始
  24. /**
  25. +------------------------------------------------ ----------
  26. * リモート ファイルを収集する
  27. +--------------------------------- ----------------------------------
  28. * @access public
  29. +--------- ----------------------------------------------------
  30. * @param string $remote リモート ファイル名
  31. * @param string $local ローカル ファイル名
  32. +---------------------------- ----------- ---------------------
  33. * @returnmixed
  34. +----------- ---------- ----------------------------------
  35. */
  36. static public functioncurl_download($remote,$local) {
  37. $cp =curl_init($remote);
  38. $fp = fopen( $local,"w");
  39. curl_setopt($cp, CURLOPT_FILE, $fp);
  40. curl_setopt($cp, CURLOPT_HEADER, 0);
  41. curl_exec($cp);
  42. curl_close($cp);
  43. fclose($fp) );
  44. }
  45. /**
  46. +------------------------------------------------ ----------
  47. * ファイルをダウンロードします
  48. * ダウンロード時に表示されるファイル名を指定し、対応するヘッダー情報を自動的に送信できます
  49. * content パラメータが指定されている場合、このパラメータの内容をダウンロードします
  50. + --- --------------------------------------------------- --- -----
  51. * @static
  52. * @access public
  53. +---------------------------- --- ------------------------
  54. * @param string $filename ダウンロードファイル名
  55. * @param string $showname ダウンロード表示ファイル名
  56. * @param string $content ダウンロードされたコンテンツ
  57. * @param integer $expire ダウンロードされたコンテンツのブラウザーのキャッシュ時間
  58. +--------------------------- ----- --------------------------------
  59. * @return void
  60. +------ ---------------------------------------------------- -------
  61. * @throws ThinkExecption
  62. +------------------------------------- ------------- ----------
  63. */
  64. 静的パブリック関数ダウンロード ($filename, $showname='',$content='',$expire=180) {
  65. if(is_file($filename)) {
  66. $length = filesize($filename);
  67. }elseif(is_file(UPLOAD_PATH.$filename)) {
  68. $filename = UPLOAD_PATH.$filename;
  69. $length = filesize($filename);
  70. }elseif($content ! = '') {
  71. $length = strlen($content);
  72. }else {
  73. throw_Exception($filename.L('ダウンロードファイルは存在しません!'));
  74. }
  75. if(empty($showname)) {
  76. $showname = $filename;
  77. }
  78. $showname = Basename($showname);
  79. if(!empty($filename)) {
  80. $type = mime_content_type($filename);
  81. }else{
  82. $type = "application/octet-stream";
  83. }
  84. //発信Httpヘッダー情報开始下載
  85. header("Pragma: public");
  86. header("Cache-control" : max-age=".$expire);
  87. //header('Cache-Control: no-store、no-cache、must-revalidate');
  88. header("Expires: " . gmdate("D, d M Y H :i:s",time()+$expire) . "GMT");
  89. header("Last-Modified: " . gmdate("D, d M Y H:i:s",time()) . "GMT" );
  90. header("Content-Disposition:attachment; filename=".$showname);
  91. header("Content-Length: ".$length);
  92. header("Content-type: ".$type);
  93. header ('Content-Encoding: none');
  94. header("Content-Transfer-Encoding: binary" );
  95. if($content == '' ) {
  96. readfile($filename);
  97. }else {
  98. echo($ content);
  99. }
  100. exit();
  101. }
  102. /**
  103. +------------------------------------------------ ----------
  104. * HTTP ヘッダー情報を表示します
  105. +-------------------------------- ------------------------
  106. * @return string
  107. +----------------- ----------------------------------------
  108. */
  109. 静的関数 get_header_info($header='',$echo=true)
  110. {
  111. ob_start();
  112. $headers = getallheaders ();
  113. if(!empty($header)) {
  114. $info = $headers[$header];
  115. echo($header.':'.$info."n"); ;
  116. }else {
  117. foreach($headers as $key=>$val) {
  118. echo("$key:$valn");
  119. }
  120. }
  121. $output = ob_get_clean();
  122. if ($echo) {
  123. echo (nl2br($output));
  124. }else {
  125. return $output;
  126. }
  127. }
  128. /**
  129. * HTTP プロトコル定義のステータス コード
  130. * @param int $num
  131. */
  132. static function send_http_status($code) {
  133. static $_status = array (
  134. // 情報 1xx
  135. 100 => '続行',
  136. 101 => 'プロトコルの切り替え',
  137. // 成功 2xx
  138. 200 => 'OK',
  139. 201 => '作成',
  140. 202 => '承認されました'、
  141. 203 => 'コンテンツなし'、
  142. 205 => '部分的なコンテンツ'、
  143. // リダイレクト 3xx
  144. 300 => '複数の選択肢',
  145. 301 => '見つかった', // 1.1
  146. 303 => =>「変更されていません」、
  147. 305 => 'プロキシを使用',
  148. // 306 は非推奨ですが予約されています
  149. 307 => '一時リダイレクト',
  150. // クライアント エラー 4xx
  151. 400 => 「不正なリクエスト」、
  152. 401 => 「不正」、
  153. 402 => 「支払いが必要です」、
  154. 403 => 「禁止」、
  155. 404 => 「見つかりません」、
  156. 405 => 'メソッドは許可されていません',
  157. 406 => 「受け入れられません」、
  158. 407 => 'プロキシ認証が必要です',
  159. 408 => 'リクエストタイムアウト',
  160. 409 => 「紛争」、
  161. 410 => 「逝ってしまった」、
  162. 411 => '長さが必要です',
  163. 412 => '前提条件が失敗しました',
  164. 413 => 'リクエストエンティティが大きすぎます',
  165. 414 => 'リクエスト URI が長すぎます'、
  166. 415 => 'サポートされていないメディア タイプ',
  167. 416 => '要求された範囲は満たされません',
  168. 417 => '期待は失敗しました',
  169. // サーバー エラー 5xx
  170. 500 => 「内部サーバー エラー」、
  171. 501 => '実装されていません',
  172. 502 => 「不正なゲートウェイ」、
  173. 503 => 「サービスは利用できません」、
  174. 504 => 'ゲートウェイ タイムアウト',
  175. 505 => 'HTTP バージョンはサポートされていません',
  176. 509 => '帯域幅制限を超えました'
  177. );
  178. if(array_key_exists($code,$_status)) {
  179. header('HTTP/1.1 '.$code.' '.$_status[$code]);
  180. }
  181. }
  182. }//类定义结束
  183. if( !function_exists ('mime_content_type')) {
  184. /**
  185. +------------------------------------------------ ----------
  186. * ファイルの mime_content タイプを取得します
  187. +---------------------------- ----- ------------------------
  188. * @return string
  189. +--------------- ----------------------------------------------------
  190. */
  191. function mime_content_type($filename)
  192. {
  193. static $contentType = array(
  194. 'ai' => 'アプリケーション/ポストスクリプト',
  195. 'aif' => 'audio/x-aiff',
  196. 'aifc' => 'audio/x-aiff',
  197. 'aiff' =>
  198. 'asc' => 'application/pgp', //skwashd によって変更されました - text/plain でした
  199. 'asf' => 'video/x-ms-asf',
  200. 'asx' => x-ms-asf',
  201. 'au' => 'オーディオ/ベーシック',
  202. 'avi' => 'ビデオ/x-msvideo',
  203. 'bcpio' =>
  204. 'bin' => 'application/octet-stream',
  205. 'bmp' => 'image/bmp',
  206. 'c' => 'text/x-csrc; ', //skwashd
  207. によって追加されました 'cc' => 'text/plain', // または 'text/x-c++src', //skwashd
  208. によって追加されました 'cs' => 'text/plain; ', //skwashd によって追加 - C# の場合 src
  209. 'cpp' => 'text/x-c++src', //skwashd
  210. によって追加されました 'cxx' => 'text/x-c++src', //skwashd
  211. によって追加されました 'cdf' => 'application/x-netcdf',
  212. 'クラス' => 'application/octet-stream',//安全ですが、application/java-class は正しいです
  213. 'com' => 'application/octet-stream',//skwashd
  214. によって追加されました 'cpio' => 'application/x-cpio',
  215. 'cpt' => 'application/mac-compactpro',
  216. 'csh' => 'application/x-csh',
  217. 'css' => 'text/css',
  218. 'csv' => 'text/comma- Separated-values',//skwashd
  219. によって追加されました 'dcr' => 'application/x-director',
  220. 'diff' => 'text/diff',
  221. 'dir' => 'application/x-director',
  222. 'dll' => 'application/octet-stream',
  223. 'dms' => 'application/octet-stream',
  224. 'doc' => 'アプリケーション/msword',
  225. 'ドット' => 'application/msword',//skwashd
  226. によって追加されました 'dvi' => 'application/x-dvi',
  227. 'dxr' => 'application/x-director',
  228. 'eps' => 'アプリケーション/追記',
  229. 'etx' => 'text/x-setext',
  230. 'exe' => 'application/octet-stream',
  231. 'ez' => 'application/andrew-inset',
  232. 'gif' => 'image/gif',
  233. 'gtar' => 'application/x-gtar',
  234. 'gz' => 'application/x-gzip',
  235. 'h' => 'text/plain', // または 'text/x-chdr',//skwashd によって追加されました
  236. 'h++' => 'text/plain', // または 'text/x-c++hdr', //skwashd によって追加されました
  237. 'hh' => 'text/plain', // または 'text/x-c++hdr', //skwashd
  238. によって追加されました 'hpp' => 'text/plain', // または 'text/x-c++hdr', //skwashd によって追加されました
  239. 'hxx' => 'text/plain', // または 'text/x-c++hdr', //skwashd
  240. によって追加されました 'hdf' => 'application/x-hdf',
  241. 'hqx' => 'application/mac-binhex40',
  242. 'htm' => 'text/html',
  243. 'html' => 'text/html',
  244. 'ice' => 'x-conference/x-cooltalk',
  245. 'ics' => 'テキスト/カレンダー',
  246. 'ief' => 'image/ief',
  247. 'ifb' => 'テキスト/カレンダー',
  248. 'iges' => 'model/iges',
  249. 'igs' => 'model/iges',
  250. 'jar' => 'application/x-jar', //skwashd によって追加 - 代替 MIME タイプ
  251. 'java' => 'text/x-java-source', //skwashd
  252. によって追加されました 'jpe' => 'image/jpeg',
  253. 'jpeg' => '画像/jpeg',
  254. 'jpg' => 'image/jpeg',
  255. 'js' => 'application/x-javascript',
  256. 'kar' => 'オーディオ/MIDI',
  257. 'ラテックス' => 'application/x-latex',
  258. 'lha' => 'application/octet-stream',
  259. 'log' => 'text/plain',
  260. 'lzh' => 'application/octet-stream',
  261. 'm3u' => 'audio/x-mpegurl',
  262. 'man' => 'application/x-troff-man',
  263. 「私」=> 'application/x-troff-me',
  264. 'メッシュ' => 'モデル/メッシュ',
  265. 'mid' => 'オーディオ/midi',
  266. 'midi' => 'audio/midi',
  267. 'mif' => 'application/vnd.mif',
  268. 'mov' => 'ビデオ/クイックタイム',
  269. 'ムービー' => 'video/x-sgi-movie',
  270. 'mp2' => 'audio/mpeg',
  271. 'mp3' => 'audio/mpeg',
  272. 'mpe' => 'video/mpeg',
  273. 'mpeg' => 'video/mpeg',
  274. 'mpg' => 'video/mpeg',
  275. 'mpga' => 'audio/mpeg',
  276. 'ms' => 'application/x-troff-ms',
  277. 'msh' => 'モデル/メッシュ',
  278. 'mxu' => 'video/vnd.mpegurl',
  279. 'nc' => 'application/x-netcdf',
  280. 'oda' => 'アプリケーション/oda',
  281. 'パッチ' => 'text/diff',
  282. 'pbm' => 'image/x-portable-bitmap',
  283. 'pdb' => 'chemical/x-pdb',
  284. 'pdf' => 'アプリケーション/pdf',
  285. 'pgm' => 'image/x-portable-graymap',
  286. 'pgn' => 'application/x-chess-pgn',
  287. 'pgp' => 'application/pgp',//skwashd
  288. によって追加されました 'php' => 'application/x-httpd-php',
  289. 'php3' => 'application/x-httpd-php3',
  290. 'pl' => 'application/x-perl',
  291. 'pm' => 'application/x-perl',
  292. 'png' => 'image/png',
  293. 'pnm' => 'image/x-portable-anymap',
  294. 'po' => 'text/plain',
  295. 'ppm' => 'image/x-portable-pixmap',
  296. 'ppt' => 'application/vnd.ms-powerpoint',
  297. 'ps' => '申請書/追記',
  298. 'qt' => 'video/quicktime',
  299. 'ra' => 'audio/x-realaudio',
  300. 'rar'=>'application/octet-stream',
  301. 'ram' => 'audio/x-pn-realaudio',
  302. 'ras' => 'image/x-cmu-raster',
  303. 'rgb' => 'image/x-rgb',
  304. 'rm' => 'audio/x-pn-realaudio',
  305. 'roff' => 'application/x-troff',
  306. 'rpm' => 'audio/x-pn-realaudio-plugin',
  307. 'rtf' => 'text/rtf',
  308. 'rtx' => 'text/richtext',
  309. 'sgm' => 'text/sgml',
  310. 'sgml' => 'text/sgml',
  311. 'sh' => 'application/x-sh',
  312. 'shar' => 'application/x-shar',
  313. 'shtml' => 'text/html',
  314. 'サイロ' => 'モデル/メッシュ',
  315. '座る' => 'application/x-stuffit',
  316. 'skd' => 'application/x-koan',
  317. 'skm' => 'application/x-koan',
  318. 'skp' => 'application/x-koan',
  319. 'skt' => 'application/x-koan',
  320. 'smi' => 'application/smil',
  321. 'smil' => 'application/smil',
  322. 'snd' => 'オーディオ/基本',
  323. 'so' => 'application/octet-stream',
  324. 'spl' => 'application/x-futuresplash',
  325. 'src' => 'application/x-wais-source',
  326. 'stc' => 'application/vnd.sun.xml.calc.template',
  327. 'std' => 'application/vnd.sun.xml.draw.template',
  328. 'sti' => 'application/vnd.sun.xml.impress.template',
  329. 'stw' => 'application/vnd.sun.xml.writer.template',
  330. 'sv4cpio' => 'application/x-sv4cpio',
  331. 'sv4crc' => 'application/x-sv4crc',
  332. 'swf' => 'application/x-shockwave-flash',
  333. 'sxc' => 'application/vnd.sun.xml.calc',
  334. 'sxd' => 'application/vnd.sun.xml.draw',
  335. 'sxg' => 'application/vnd.sun.xml.writer.global',
  336. 'sxi' => 'application/vnd.sun.xml.impress',
  337. 'sxm' => 'application/vnd.sun.xml.math',
  338. 'sxw' => 'application/vnd.sun.xml.writer',
  339. 't' => 'application/x-troff',
  340. 'tar' => 'application/x-tar',
  341. 'tcl' => 'application/x-tcl',
  342. 'tex' => 'application/x-tex',
  343. 'texi' => 'application/x-texinfo',
  344. 'texinfo' => 'application/x-texinfo',
  345. 'tgz' => 'application/x-gtar',
  346. 'tif' => '画像/tiff',
  347. 'tiff' => 'image/tiff',
  348. 'tr' => 'application/x-troff',
  349. 'tsv' => 'テキスト/タブ区切り値',
  350. 'txt' => 'text/plain',
  351. 'ustar' => 'application/x-ustar',
  352. 'vbs' => 'text/plain', //skwashd によって追加されました - 明らかな理由があります
  353. 'vcd' => 'application/x-cdlink',
  354. 'vcf' => 'text/x-vcard',
  355. 'vcs' => 'テキスト/カレンダー',
  356. 'vfb' => 'テキスト/カレンダー',
  357. 'vrml' => 'model/vrml',
  358. 'vsd' => 'application/vnd.visio',
  359. 'wav' => 'audio/x-wav',
  360. 'ワックス' => 'audio/x-ms-wax',
  361. 'wbmp' => 'image/vnd.wap.wbmp',
  362. 'wbxml' => 'application/vnd.wap.wbxml',
  363. 'wm' => 'video/x-ms-wm',
  364. 'wma' => 'audio/x-ms-wma',
  365. 'wmd' => 'application/x-ms-wmd',
  366. 'wml' => 'text/vnd.wap.wml',
  367. 'wmlc' => 'application/vnd.wap.wmlc',
  368. 'wmls' => 'text/vnd.wap.wmlscript',
  369. 'wmlsc' => 'application/vnd.wap.wmlscriptc',
  370. 'wmv' => 'video/x-ms-wmv',
  371. 'wmx' => 'video/x-ms-wmx',
  372. 'wmz' => 'application/x-ms-wmz',
  373. 'wrl' => 'model/vrml',
  374. 'wvx' => 'video/x-ms-wvx',
  375. 'xbm' => 'image/x-xbitmap',
  376. 'xht' => 'application/xhtml+xml',
  377. 'xhtml' => 'application/xhtml+xml',
  378. 'xls' => 'application/vnd.ms-excel',
  379. 'xlt' => 'application/vnd.ms-excel',
  380. 'xml' => 'application/xml',
  381. 'xpm' => 'image/x-xpixmap',
  382. 'xsl' => 'text/xml',
  383. 'xwd' => 'image/x-xwindowdump',
  384. 'xyz' => 'chemical/x-xyz',
  385. 'z' => 'application/x-compress',
  386. 'zip' => 'application/zip',
  387. );
  388. $type = strto lower(substr(strrchr($filename, '.'),1));
  389. if(isset($contentType[$type])) {
  390. $mime = $ contentType[$type];
  391. }else {
  392. $mime = 'application/octet-stream';
  393. }
  394. return $mime;
  395. }
  396. }
  397. if(!function_exists('image_type_to_extension'))
  398. {
  399. function image_type_to_extension ($imagetype)
  400. {
  401. if(empty($imagetype)) return false;
  402. switch($imagetype)
  403. {
  404. case IMAGETYPE_GIF : return '.gif';
  405. case IMAGETYPE_JPEG : return '.jpg';
  406. case IMAGETYPE_PNG : return '.png';
  407. case IMAGETYPE_SWF : return '.swf';
  408. case IMAGETYPE_PSD : return '.psd';
  409. case IMAGETYPE_BMP : return '.bmp';
  410. case IMAGETYPE_TIFF_II : return '.tiff';
  411. case IMAGETYPE_TIFF_MM : return '.tiff';
  412. case IMAGETYPE_JPC : return '.jpc';
  413. case IMAGETYPE_JP2 : return '.jp2';
  414. case IMAGETYPE_JPX : return '.jpf';
  415. case IMAGETYPE_JB2 : return '.jb2';
  416. case IMAGETYPE_SWC : return '.swc';
  417. case IMAGETYPE_IFF : return '.aiff';
  418. case IMAGETYPE_WBMP : return '.wbmp';
  419. case IMAGETYPE_XBM : return '.xbm';
  420. デフォルト : return false;
  421. }
  422. }
  423. }
  424. ?>
复制代

>>> さらに多くのphp模拟登录文章、专题链接:php模拟登录 phpカール模拟登录教程大全



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