>  기사  >  백엔드 개발  >  QQ 공간에 대한 PHP 시뮬레이션 로그인의 예

QQ 공간에 대한 PHP 시뮬레이션 로그인의 예

WBOY
WBOY원래의
2016-07-25 08:53:102120검색
  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 ( $ 패턴,$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://ctc.qzs.qq.com/ac/qzone/login/succ.html?para=toolbar&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. 함수 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. // | Copyright (c) 2009 http://thinkphp.cn All Rights Reserved.
  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
  20. * @version $Id$
  21. ----------------------- ------------------------------------- -----
  22. */
  23. 클래스 Http
  24. {//类定义开始
  25. /**
  26. ---------------------------------- ----------
  27. * 원격 파일 수집
  28. ------------- ---- ---------
  29. * @access public
  30. ---------- -------- ----------------
  31. * @param string $ 원격 원격 파일명
  32. * @param string $local 로컬 저장 파일명
  33. -------------- --- ------------------
  34. * @return 혼합
  35. ------- -- ------------------------------------------------ -
  36. */
  37. 정적 공개 함수 컬_다운로드($remote,$local) {
  38. $cp = 컬_init($remote);
  39. $fp = fopen($local,"w");
  40. 컬_setopt($cp, CURLOPT_FILE, $fp);
  41. 컬_setopt($cp , CURLOPT_HEADER, 0);
  42. 컬_exec($cp);
  43. 컬_close($cp);
  44. fclose($fp);
  45. }
  46. /**
  47. ---------------------------------- -----------
  48. * 파일 다운로드
  49. * 다운로드 시 표시되는 파일명을 지정하고, 해당 헤더 정보를 자동으로 전송할 수 있습니다.
  50. * content 매개변수가 지정된 경우 이 파일을 다운로드합니다. 매개변수 내용
  51. -------------------------------- -------------
  52. * @static
  53. * @access public
  54. -------- ----- -----------
  55. * @param string $ filename 다운로드 파일 이름
  56. * @param string $showname 표시된 파일 이름 다운로드
  57. * @param string $content 다운로드된 콘텐츠
  58. * @param 정수 $expire 다운로드 콘텐츠 브라우저 캐시 시간
  59. ----- -- ------------------------------------------------ -- -
  60. * @return void
  61. ------------------------ -------- -----
  62. * @throws ThinkExecption
  63. -------------- ------------ ------------------------- --
  64. * /
  65. 정적 공개 함수 다운로드 ($filename, $showname='',$content='',$expire=180) {
  66. if(is_file($filename)) {
  67. $length = filesize( $filename);
  68. }elseif(is_file(UPLOAD_PATH.$filename)) {
  69. $filename = UPLOAD_PATH.$filename;
  70. $length = filesize($filename);
  71. }elseif($content != '') {
  72. $length = strlen($content);
  73. }else {
  74. throw_Exception($filename.L('下载文件不存재!'));
  75. }
  76. if(empty($showname)) {
  77. $showname = $filename;
  78. }
  79. $showname = basename($showname);
  80. if( !empty($filename)) {
  81. $type = mime_content_type($filename);
  82. }else{
  83. $type = "application/octet-stream";
  84. }
  85. //发送Http Header信息 开始下载
  86. header("Pragma: public");
  87. header("Cache-control: max-age=".$expire);
  88. //header('Cache-Control: no -store, no-cache, must-revalidate');
  89. header("만료: " . gmdate("D, d M Y H:i:s",time() $expire) . "GMT");
  90. header("최종 수정: " . gmdate("D, d M Y H:i:s",time()) . "GMT");
  91. header("콘텐츠 처리: attachment; filename=".$ showname);
  92. header("Content-Length: ".$length);
  93. header("Content-type: ".$type);
  94. header('Content-Encoding: none');
  95. header("콘텐츠 전송 인코딩: 바이너리" );
  96. if($content == '' ) {
  97. readfile($filename);
  98. }else {
  99. echo($content );
  100. }
  101. 종료();
  102. }
  103. /**
  104. ---------------------------------- ----------
  105. * HTTP 헤더 정보 표시
  106. --------------- - ---------------------------------
  107. * @return 문자열
  108. ------- --- --------------
  109. */
  110. 정적 함수 get_header_info($header='',$echo=true)
  111. {
  112. ob_start();
  113. $headers = getallheaders();
  114. if(!empty($header)) {
  115. $info = $headers[$header];
  116. echo ($header.':'.$info."n"); ;
  117. }else {
  118. foreach($headers as $key=>$val) {
  119. echo("$key:$valn");
  120. }
  121. }
  122. $ 출력 = ob_get_clean();
  123. if ($echo) {
  124. echo (nl2br($output));
  125. }else {
  126. return $output;
  127. }
  128. }
  129. /**
  130. * HTTP 프로토콜 정의 상태 코드
  131. * @param int $num
  132. */
  133. static function send_http_status($code) {
  134. static $_status = array(
  135. // 정보 1xx
  136. 100 => ' 계속',
  137. 101 => '프로토콜 전환',
  138. // 성공 2xx
  139. 200 => '확인',
  140. 201 => 202 => '승인',
  141. 203 => '신뢰할 수 없는 정보',
  142. 204 => '콘텐츠 없음',
  143. 205 => => '부분 콘텐츠',
  144. // 리디렉션 3xx
  145. 300 => '복수 선택',
  146. 301 => '영구적으로 이동됨',
  147. 302 => 발견', // 1.1
  148. 303 => '기타 보기',
  149. 304 => '수정되지 않음',
  150. 305 => '프록시 사용',
  151. // 306은 더 이상 사용되지 않지만 예약되었습니다
  152. 307 => '임시 리디렉션',
  153. // 클라이언트 오류 4xx
  154. 400 => '잘못된 요청',
  155. 401 => '무단',
  156. 402 => '결제 필수',
  157. 403 => '금지',
  158. 404 => '찾을 수 없음',
  159. 405 => '허용되지 않는 메소드',
  160. 406 => '허용되지 않음',
  161. 407 => '프록시 인증 필요',
  162. 408 => '요청 시간 초과',
  163. 409 => '갈등',
  164. 410 => '사라지다',
  165. 411 => '필요한 길이',
  166. 412 => '전제조건 실패',
  167. 413 => '요청 엔터티가 너무 큼',
  168. 414 => '요청-URI가 너무 김',
  169. 415 => '지원되지 않는 미디어 유형',
  170. 416 => '요청한 범위가 만족스럽지 않습니다.',
  171. 417 => '예상 실패',
  172. // 서버 오류 5xx
  173. 500 => '내부 서버 오류',
  174. 501 => '구현되지 않음',
  175. 502 => '나쁜 게이트웨이',
  176. 503 => '서비스 이용 불가',
  177. 504 => '게이트웨이 시간 초과',
  178. 505 => 'HTTP 버전은 지원되지 않습니다',
  179. 509 => '대역폭 제한 초과'
  180. );
  181. if(array_key_exists($code,$_status)) {
  182. header('HTTP/1.1 '.$code.' '.$_status[$code]);
  183. }
  184. }
  185. }//类定义结束
  186. if( !function_exists ('mime_content_type')) {
  187. /**
  188. ---------------------------------- ----------
  189. * 파일의 mime_content 유형을 가져옵니다
  190. ------------- - ---------------------
  191. * @return 문자열
  192. ----- ---- --------------------------------- ----
  193. */
  194. function mime_content_type($filename)
  195. {
  196. static $contentType = array(
  197. 'ai' => 'application/postscript',
  198. 'aif' => 'audio/x-aiff',
  199. 'aifc' => 'audio/x-aiff' ,
  200. 'aiff' => 'audio/x-aiff',
  201. 'asc' => 'application/pgp', //skwashd에 의해 변경됨 - 이전에는 text/plain
  202. 'asf' = > '비디오/x-ms-asf',
  203. 'asx' => '비디오/x-ms-asf',
  204. 'au' => '오디오/기본' avi' => '비디오/x-msvideo',
  205. 'bcpio' => 'application/x-bcpio',
  206. 'bin' => '응용 프로그램/옥텟-스트림',
  207. 'bmp' => '이미지/bmp',
  208. 'c' => 'text/plain', // 또는 'text/x-csrc', //skwashd에 의해 추가됨
  209. 'cc' = > 'text/plain', // 또는 'text/x-c src', //skwashd에 의해 추가됨
  210. 'cs' => 'text/plain', //skwashd에 의해 추가됨 - C#의 경우 src
  211. 'cpp' => 'text/x-c src', //skwashd에 의해 추가됨
  212. 'cxx' => 'text/x-c src', //skwashd에 의해 추가됨
  213. 'cdf' => 'application/x-netcdf',
  214. '클래스' => 'application/octet-stream',//보안되지만 application/java-class는 정확합니다
  215. 'com' => 'application/octet-stream',//skwashd에 의해 추가됨
  216. 'cpio' => 'application/x-cpio',
  217. 'cpt' => 'application/mac-compactpro',
  218. 'csh' => 'application/x-csh',
  219. 'css' => '텍스트/css',
  220. 'csv' => '텍스트/쉼표로 구분된 값',//skwashd에 의해 추가됨
  221. 'dcr' => 'application/x-director',
  222. 'diff' => '텍스트/비교',
  223. 'dir' => 'application/x-director',
  224. 'dll' => '애플리케이션/옥텟-스트림',
  225. 'dms' => '응용 프로그램/옥텟-스트림',
  226. 'doc' => '응용 프로그램/msword',
  227. '점' => 'application/msword',//skwashd에 의해 추가됨
  228. 'dvi' => 'application/x-dvi',
  229. 'dxr' => 'application/x-director',
  230. 'eps' => '응용프로그램/포스트스크립트',
  231. 'etx' => 'text/x-setext',
  232. 'exe' => '애플리케이션/옥텟-스트림',
  233. 'ez' => 'application/andrew-inset',
  234. 'gif' => '이미지/gif',
  235. 'gtar' => 'application/x-gtar',
  236. 'gz' => 'application/x-gzip',
  237. 'h' => 'text/plain', // 또는 'text/x-chdr',//skwashd에 의해 추가됨
  238. 'h ' => 'text/plain', // 또는 'text/x-c hdr', //skwashd에 의해 추가
  239. 'hh' => 'text/plain', // 또는 'text/x-c hdr', //skwashd에 의해 추가
  240. 'hpp' => 'text/plain', // 또는 'text/x-c hdr', //skwashd에 의해 추가
  241. 'hxx' => 'text/plain', // 또는 'text/x-c hdr', //skwashd에 의해 추가
  242. 'hdf' => 'application/x-hdf',
  243. 'hqx' => 'application/mac-binhex40',
  244. 'htm' => '텍스트/html',
  245. 'html' => 'text/html',
  246. '얼음' => 'x-conference/x-cooltalk',
  247. 'ics' => '문자/캘린더',
  248. 'ief' => '이미지/ief',
  249. 'ifb' => '텍스트/캘린더',
  250. 'iges' => '모델/iges',
  251. 'igs' => '모델/iges',
  252. '병' => 'application/x-jar', //skwashd에 의해 추가 - 대체 MIME 유형
  253. 'java' => 'text/x-java-source', //skwashd에 의해 추가됨
  254. 'jpe' => '이미지/jpeg',
  255. 'jpeg' => '이미지/jpeg',
  256. 'jpg' => '이미지/jpeg',
  257. 'js' => 'application/x-javascript',
  258. 'kar' => '오디오/미디',
  259. '라텍스' => 'application/x-latex',
  260. 'lha' => '애플리케이션/옥텟-스트림',
  261. '로그' => '텍스트/일반',
  262. 'lzh' => '응용프로그램/옥텟-스트림',
  263. 'm3u' => 'audio/x-mpegurl',
  264. '남자' => 'application/x-troff-man',
  265. '나' => 'application/x-troff-me',
  266. 'mesh' => '모델/메시',
  267. '중간' => '오디오/미디',
  268. '미디' => '오디오/미디',
  269. 'mif' => 'application/vnd.mif',
  270. 'mov' => '동영상/퀵타임',
  271. '영화' => 'video/x-sgi-movie',
  272. 'mp2' => '오디오/mpeg',
  273. 'mp3' => '오디오/mpeg',
  274. 'mpe' => '비디오/mpeg',
  275. 'mpeg' => '비디오/mpeg',
  276. 'mpg' => '비디오/mpeg',
  277. 'mpga' => '오디오/mpeg',
  278. 'ms' => 'application/x-troff-ms',
  279. 'msh' => '모델/메시',
  280. 'mxu' => 'video/vnd.mpegurl',
  281. 'nc' => 'application/x-netcdf',
  282. 'oda' => '애플리케이션/오다',
  283. '패치' => '텍스트/차이점',
  284. 'pbm' => 'image/x-portable-bitmap',
  285. 'pdb' => '화학/x-pdb',
  286. 'pdf' => '응용프로그램/pdf',
  287. 'pgm' => 'image/x-portable-graymap',
  288. 'pgn' => 'application/x-chess-pgn',
  289. 'pgp' => 'application/pgp',//skwashd에 의해 추가됨
  290. 'php' => 'application/x-httpd-php',
  291. 'php3' => 'application/x-httpd-php3',
  292. 'pl' => 'application/x-perl',
  293. 'pm' => 'application/x-perl',
  294. 'png' => '이미지/png',
  295. 'pnm' => 'image/x-portable-anymap',
  296. 'po' => '텍스트/일반',
  297. 'ppm' => 'image/x-portable-pixmap',
  298. 'ppt' => 'application/vnd.ms-powerpoint',
  299. 'ps' => '응용 프로그램/포스트스크립트',
  300. 'qt' => '동영상/퀵타임',
  301. 'ra' => 'audio/x-realaudio',
  302. 'rar'=>'application/octet-stream',
  303. 'ram' => 'audio/x-pn-realaudio',
  304. 'ras' => 'image/x-cmu-raster',
  305. 'rgb' => '이미지/x-rgb',
  306. 'rm' => 'audio/x-pn-realaudio',
  307. 'roff' => 'application/x-troff',
  308. 'rpm' => 'audio/x-pn-realaudio-plugin',
  309. 'rtf' => '텍스트/rtf',
  310. 'rtx' => '텍스트/리치텍스트',
  311. 'sgm' => '텍스트/sgml',
  312. 'sgml' => 'text/sgml',
  313. 'sh' => 'application/x-sh',
  314. 'shar' => 'application/x-shar',
  315. 'shtml' => 'text/html',
  316. '사일로' => '모델/메시',
  317. '앉아' => 'application/x-stuffit',
  318. 'skd' => 'application/x-koan',
  319. 'skm' => 'application/x-koan',
  320. 'skp' => 'application/x-koan',
  321. 'skt' => 'application/x-koan',
  322. 'smi' => '애플리케이션/smil',
  323. 'smil' => '애플리케이션/smil',
  324. 'snd' => '오디오/기본',
  325. '그래서' => '응용 프로그램/옥텟-스트림',
  326. 'spl' => 'application/x-futuresplash',
  327. 'src' => 'application/x-wais-source',
  328. 'stc' => 'application/vnd.sun.xml.calc.template',
  329. 'std' => 'application/vnd.sun.xml.draw.template',
  330. 'sti' => 'application/vnd.sun.xml.impress.template',
  331. 'stw' => 'application/vnd.sun.xml.writer.template',
  332. 'sv4cpio' => 'application/x-sv4cpio',
  333. 'sv4crc' => 'application/x-sv4crc',
  334. 'swf' => 'application/x-shockwave-flash',
  335. 'sxc' => 'application/vnd.sun.xml.calc',
  336. 'sxd' => 'application/vnd.sun.xml.draw',
  337. 'sxg' => 'application/vnd.sun.xml.writer.global',
  338. 'sxi' => 'application/vnd.sun.xml.impress',
  339. 'sxm' => 'application/vnd.sun.xml.math',
  340. 'sxw' => 'application/vnd.sun.xml.writer',
  341. 't' => 'application/x-troff',
  342. 'tar' => 'application/x-tar',
  343. 'tcl' => 'application/x-tcl',
  344. 'tex' => 'application/x-tex',
  345. 'texi' => 'application/x-texinfo',
  346. 'texinfo' => 'application/x-texinfo',
  347. 'tgz' => 'application/x-gtar',
  348. 'tif' => '이미지/tiff',
  349. 'tiff' => 'image/tiff',
  350. 'tr' => 'application/x-troff',
  351. 'tsv' => '텍스트/탭으로 구분된 값',
  352. 'txt' => '텍스트/일반',
  353. 'ustar' => 'application/x-ustar',
  354. 'vbs' => 'text/plain', //skwashd에 의해 추가됨 - 분명한 이유로
  355. 'vcd' => 'application/x-cdlink',
  356. 'vcf' => 'text/x-vcard',
  357. 'vcs' => '문자/캘린더',
  358. 'vfb' => '문자/캘린더',
  359. 'vrml' => '모델/vrml',
  360. 'vsd' => 'application/vnd.visio',
  361. 'wav' => '오디오/x-wav',
  362. '왁스' => '오디오/x-ms-wax',
  363. 'wbmp' => 'image/vnd.wap.wbmp',
  364. 'wbxml' => 'application/vnd.wap.wbxml',
  365. 'wm' => '비디오/x-ms-wm',
  366. 'wma' => '오디오/x-ms-wma',
  367. 'wmd' => 'application/x-ms-wmd',
  368. 'wml' => 'text/vnd.wap.wml',
  369. 'wmlc' => 'application/vnd.wap.wmlc',
  370. 'wmls' => 'text/vnd.wap.wmlscript',
  371. 'wmlsc' => 'application/vnd.wap.wmlscriptc',
  372. 'wmv' => '비디오/x-ms-wmv',
  373. 'wmx' => '비디오/x-ms-wmx',
  374. 'wmz' => 'application/x-ms-wmz',
  375. 'wrl' => '모델/vrml',
  376. 'wvx' => '동영상/x-ms-wvx',
  377. 'xbm' => '이미지/x-xbitmap',
  378. 'xht' => 'application/xhtml xml',
  379. 'xhtml' => 'application/xhtml xml',
  380. 'xls' => 'application/vnd.ms-excel',
  381. 'xlt' => 'application/vnd.ms-excel',
  382. 'xml' => 'application/xml',
  383. 'xpm' => '이미지/x-xpixmap',
  384. 'xsl' => 'text/xml',
  385. 'xwd' => '이미지/x-xwindowdump',
  386. 'xyz' => '화학물질/x-xyz',
  387. 'z' => 'application/x-compress',
  388. 'zip' => 'application/zip',
  389. );
  390. $type = strtolower(substr(strrchr($filename, '.'),1));
  391. if(isset($contentType[$type])) {
  392. $mime = $contentType[$type];
  393. }else {
  394. $mime = 'application/octet-stream';
  395. }
  396. return $mime;
  397. }
  398. }
  399. if(!function_exists('image_type_to_extension'))
  400. {
  401. function image_type_to_extension($imagetype)
  402. {
  403. if(empty($imagetype)) return false;
  404. 스위치($imagetype)
  405. {
  406. 케이스 IMAGETYPE_GIF : '.gif' 반환;
  407. 케이스 IMAGETYPE_JPEG : '.jpg' 반환;
  408. 케이스 IMAGETYPE_PNG : '.png' 반환;
  409. 사례 IMAGETYPE_SWF : '.swf' 반환;
  410. 사례 IMAGETYPE_PSD : '.psd' 반환;
  411. 사례 IMAGETYPE_BMP : '.bmp' 반환;
  412. 사례 IMAGETYPE_TIFF_II : '.tiff' 반환;
  413. 사례 IMAGETYPE_TIFF_MM : '.tiff' 반환;
  414. 케이스 IMAGETYPE_JPC : '.jpc' 반환;
  415. 케이스 IMAGETYPE_JP2 : '.jp2' 반환;
  416. 케이스 IMAGETYPE_JPX : '.jpf';
  417. 케이스 IMAGETYPE_JB2 : return '.jb2';
  418. 케이스 IMAGETYPE_SWC : '.swc' 반환;
  419. 케이스 IMAGETYPE_IFF : '.aiff' 반환;
  420. 케이스 IMAGETYPE_WBMP : '.wbmp' 반환;
  421. 케이스 IMAGETYPE_XBM : ' 반환 .xbm';
  422. 기본값: false 반환;
  423. }
  424. }
  425. }
  426. ?>
复system代码

>>> 더 많은 php模拟登录 文章,专题链接:php模拟登录 phpcur模拟登录教程大전체



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.