PHP CURL 기반 메 일 주소 에 대한 자세 한 설명 가 져 오기

CURL 은 가족 여행 에 꼭 필요 한 살인 약이 라 고 할 수 있 는데,왜 이렇게 표현 할 까?페이지 캡 처 시 뮬 레이 션 로그 인 채집 등 일련의 기능 을 쉽게 실현 할 수 있 기 때문이다.CURL 을 처음 접 했 을 때 메 일 사용자 목록 에서 캡 처 를 완료 해 야 한 다 는 것 을 기억 하 세 요.당시 진 도 를 따라 잡기 위해 자세히 연구 하지 않 고 인터넷 에서 자 료 를 찾 아 기능 을 실현 했다.현재 당초 의 코드 를 정리 하 는 기능 은

<?php
  error_reporting ( 0 );
  set_time_limit ( 0 );
  header ( "Content-Type: text/html; charset=GB2312" );

  //
  $user = 'username';
  $pass = 'password';

  // cookie
  define ( "COOKIEJAR", tempnam ( ini_get ( "upload_tmp_dir" ), "cookie" ) );

  $url = 'http://reg.163.com/logins.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D-1';
  $refer = 'http://mail.163.com';
  $fields_post = array ('username' => $user, 'password' => $pass, 'verifycookie' => 1, 'style' => - 1, 'product' => 'mail163', 'selType' => - 1, 'secure' => 'on' );
  $fields_string = http_build_query ( $fields_post, '&' );
  $headers_login = array ('User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0', 'Referer' => 'http://www.163.com' );

  //
  $ch = curl_init ( $url );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt ( $ch, CURLOPT_HEADER, true );
  curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 120 );
  curl_setopt ( $ch, CURLOPT_POST, true );
  curl_setopt ( $ch, CURLOPT_REFERER, $refer );
  curl_setopt ( $ch, CURLOPT_COOKIESESSION, true );
  curl_setopt ( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
  curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers_login );
  curl_setopt ( $ch, CURLOPT_POST, count ( $fields ) );
  curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields_string );
  $result = curl_exec ( $ch );
  curl_close ( $ch );

  //
  $url = 'http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&style=-1&username=loki_wuxi';
  $headers = array ('User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0' );

  $ch = curl_init ( $url );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt ( $ch, CURLOPT_HEADER, true );
  curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 120 );
 curl_setopt ( $ch, CURLOPT_POST, true );
  curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
  curl_setopt ( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );
  curl_setopt ( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
  $result = curl_exec ( $ch );
  curl_close ( $ch );

 // sid
  preg_match ( '/sid=[^\"].*/', $result, $location );
  $sid = substr ( $location [0], 4, - 1 );

  //
  $url = 'http://g4a30.mail.163.com/jy3/address/addrlist.jsp?sid=' . $sid . '&gid=all';
  $headers = array ('User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0' );

  $ch = curl_init ( $url );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt ( $ch, CURLOPT_HEADER, true );
  curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 120 );
  curl_setopt ( $ch, CURLOPT_POST, true );
  curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
  curl_setopt ( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );
  curl_setopt ( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
  $result = curl_exec ( $ch );
  curl_close ( $ch );
  unlink ( COOKIEJAR );

  //
  preg_match_all ( '/<td class="Ibx_Td_addrName"><a[^>]*>(.*?)<\/a><\/td><td class="Ibx_Td_addrEmail"><a[^>]*>(.*?)<\/a><\/td>/i', $result, $infos, PREG_SET_ORDER );
  //1: 2:
  print_r ( $infos );
  ?>
으로 PHP 파일 을 만들어 상기 코드 를 복사 하여 저장 한 후에 효과 가 즉시 나타 납 니 다.메 일 계 정과 비밀 번 호 를 변경 하 는 것 을 기억 하 세 요.계 정 은@접미사 가 필요 없습니다.CURL 첫 체험,어 때,괜 찮 지?나중에 CSDN 에서 다른 사람 이 택배 조 회 를 받 는 문 제 를 묻 는 글 을 보 았 다.그 는 큰 택배 회사 의 조회 업 무 를 한 페이지 에 만 들 려 고 했 는데 정말 좋 은 실 용적 인 도구 이다.그러나 택배 조회 에 인증번호 가 있 기 때문에 저도 모 르 게 CURL 의 이기 가 생각 났 다.나중에 댓 글 주 에 게 기능 을 실현 하도록 도와 주 었 는데 생각 이 간단 했다.먼저 CURL 시 뮬 레이 션 으로 인증 코드 를 캡 처 한 다음 에 사용자 제출 페이지 에 표시 하고 인증 코드 를 저장 하 는 COOKIE 등 사용자 조회 와 함께 제출 하면 COOKIE 의 동기 화 를 보장 했다.소스 코드 는 다음 과 같 습 니 다.-getems.html

<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <title>EMS </title>
  </head>
  <body>
  <?php
  fclose(fopen('cookie.txt','w')); // cookie.txt cookie
  $cookiejar = realpath('cookie.txt');
  $fp = fopen("example_homepage.txt", "w"); // example_homepage.txt
  $ch = curl_init("http://www.ems.com.cn/servlet/ImageCaptchaServlet");
  curl_setopt($ch, CURLOPT_FILE, $fp);
  curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);
  curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_exec($ch);
  curl_close($ch);
  fclose($fp);

  //readfile($cookiejar); // cookie
  //readfile("example_homepage.jpg"); //
  ?>
  <form action="getems.php" method="post" name="form1">
   :<input name="mailNum" type="text" value="EA739701017CS" />(13 2 )
 <input name="code" type="text" value="" />
  <?php echo "<img src='example_homepage.txt'>";?>
  <input type="submit" value=" ">
  </form>

  </body>
  </html>
-getems.php

<?php
  if($_POST){
  // cookie
  $cookiejar = realpath('cookie.txt');
  // myEmsbarCode
  $ch = curl_init("http://www.ems.com.cn");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);
  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
  $result = curl_exec($ch);
  curl_close($ch);
  preg_match("/<input type=\"hidden\" name=\"myEmsbarCode\" value=\"(.*)\"\/>/isU",$result,$myEmsbarCode);
  preg_match("/<\/span><input name=\"(.*)\" type=\"text\"/isU",$result,$codename);

  $parm = array($codename[1]=>$_POST['code'],
  mailNum =>$_POST['mailNum'],
  myEmsbarCode=>$myEmsbarCode[1],
  reqCode=>'browseBASE'
  );

  $ch = curl_init("http://www.ems.com.cn/qcgzOutQueryAction.do");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);
  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_REFERER, "http://www.ems.com.cn");
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parm));
  $_source = curl_exec($ch);
  curl_close($ch);

  //
  var_dump($_source);
  exit;
  }
  ?>
는 CURL 라 이브 러 리 의 매개 변 수 를 상세 하 게 설명 합 니 다.인터넷 에 제 가 함수 목록 을 직접 수 록 했 습 니 다.CURL 라 이브 러 리 는 모두 17 개의 함수 가 있 습 니 다.curlclose:CURL 세 션 curl 닫 기copy_handle:CURL 세 션 핸들 을 복사 하 는 동시에 3 모든 인자 curl 복사errno:마지막 오류 코드 를 되 돌려 줍 니 다 curlerror:현재 세 션 의 마지막 오 류 를 설명 하 는 문자열 을 되 돌려 줍 니 다 curlexec:현재 세 션 curl 실행getinfo:특정 정보 획득 curlinit:CURL 세 션 curl 초기 화multi_add_handle:다 중 연결 세 션 에 핸들 curl 추가multi_close:다 중 핸들 CRUL 세 션 curl 닫 기multi_exec:다 중 핸들 CURL 세 션 curl 실행multi_getcontent:실행 한 핸들 의 내용 을 되 돌려 줍 니 다.CURLOPT 가 설정 되 어 있 으 면RETURNTRANSFERcurl_multi_info_read:현재 모든 연결 정보 가 져 오기 curlmulti_init:다 중 핸들 세 션 curl 초기 화multi_remove_handle:다 중 핸들 세 션 에서 핸들 curl 삭제multi_select:모든 바 인 딩 된 소켓 curl 가 져 오기setopt:CURL 전송 설정 curlversion:CURL 버 전 상용 설정 옵션 불 값 옵션 가 져 오기 CURLOPTAUTOREEFERER:되 돌아 오 는 정보 헤더 에 전향 정보 가 있 을 때 자동 으로 설정 하기 전에 CURLOPT 연결BINARYTRANSFER:TRUEtoreturntherawoutputwhenCURLOPT_RETURNTRANSFERisused.CURLOPT_COOKIESESSION:새 쿠키 세 션 으로 표시 되 며,이전에 설정 한 쿠키 세 션 은 무시 합 니 다 CURLOPTCRLF:유 닉 스 시스템 의 줄 바 꿈 문 자 를 Dos 줄 바 꿈 문자 CURLOPT 로 변환DNS_USE_GLOBAL_CACHE:전역 DNS 캐 시 사용 CURLOPTFAILONERROR:반환 오류 무시 CURLOPTFILETIME:요청 문서 의 수정 날 짜 를 가 져 옵 니 다.이 날 짜 는 curl 로 사용 할 수 있 습 니 다.getinfo()가 져 오기.CURLOPT_FOLLOWLOCATION:서버 에 따라 돌아 오 는 모든 리 셋 정보 CURLOPTFORBID_REUSE:프로 세 스 가 끝 난 후 세 션 을 강제로 닫 습 니 다.CURLOPT 를 다시 사용 할 수 있 도록 캐 시 하지 않 습 니 다.FRESH_CONNECT:캐 시가 아 닌 새 세 션 을 강제로 만 듭 니 다 CURLOPTHEADER:되 돌아 오 는 출력 에 응답 헤더 정보 포함 CURLOPTHTTPGET:GETCURLOPT 로 HTTP 요청 방식 설정HTTPPROXYTUNNEL:HTTP 에이 전 트 를 통 해 연결 CURLOPTNOBODY:되 돌아 오 는 출력 에는 문서 정보 가 포함 되 어 있 지 않 습 니 다.CURLOPTNOPROGRESS:프로 세 스 단계 전송 금지,PHP 자동 으로 진짜 CURLOPTNOSIGNAL:PHP 로 보 내 는 모든 메시지 무시 CURLOPTPOST:POST 방식 으로 데 이 터 를 제출 하고 POST 형식 은 application/x-www-form-urlencodeCURLOPT 입 니 다.PUTTRUE:PUT 방식 으로 파일 을 업로드 하고 CURLOPT 를 설정 합 니 다.인 필 과 CURLOPTINFILESIZECURLOPT_RETURNTRANSFER:curl 대신 문자열 을 되 돌려 줍 니 다.exec()후 CURLOPT 직접 출력SSL_VERIFYPEER:SSL 인증 오픈 CURLOPTUNRESTRICTED_AUTH:사용자 이름과 비밀 번 호 를 계속 연결 하고 CURLOPT 를 설정 합 니 다.FOLLOWLOCATIONCURLOPT_UPLOAD:정수 치 옵션 업로드 준비 CURLOPTBUFFERSIZE:캐 시 크기 CURLOPTCONNECTTIMEOUT:연결 시간 설정,기본 0 은 무제 한 CURLOPTDNS_CACHE_TIMEOUT:메모리 에 DNS 정 보 를 저장 하 는 시간,기본 2 분 CURLOPTINFILESIZE:원 격 사이트 에 업로드 할 파일 크기 CURLOPTLOW_SPEED_LIMIT:전송 최저 속도 제한 andabort.CURLOPTLOW_SPEED_TIME:전송 시간 제한 CURLOPTMAXCONNECTS:최대 지속 접속 수 CURLOPTMAXREDIRS:최대 회전 수 CURLOPTPORT:연결 포트 CURLOPT**검증 방식 CURLOPT**포트 CURLOPT**유형 CURLOPTTIMEOUT:CURL 함수 의 최대 실행 시간 문자열 옵션 CURLOPTCOOKIE:HTTP 헤더 의 set-cookie 의 쿠키 정보 CURLOPTCOOKIEFILE:쿠키 정 보 를 포함 하 는 파일 입 니 다.쿠키 파일 의 형식 은 Netscape 형식 이거 나 HTTP 헤드 형식 일 수 있 습 니 다 CURLOPTCOOKIEJAR:연결 이 끝 난 후 쿠키 정 보 를 저장 하 는 파일 CURLOPTCUSTOMEQUEST:사용자 정의 요청 헤더,상대 주소 사용 CURLOPTENCODING:HTTP 요청 헤더 의 Accept-Encoding 값 CURLOPTPOSFIELDS:POST 형식 으로 제출 한 데이터 내용 CURLOPTPROXY:프 록 시 채널 CURLOPTPROXYUSERPWD:대리 인증 사용자 이름과 비밀번호 CURLOPTRANGE:데이터 의 범 위 를 되 돌려 주 고 바이트 로 CURLOPTREFERER:전방 링크 CURLOPTURL:연결 할 URL 주소,curlinit()에 CURLOPT 설정USERAGENT:HTTP 헤더 의 User-agent 값 CURLOPTUSERPWD:연결 종 에 사용 되 는 인증 정보 배열 옵션 CURLOPTHTTP 200ALIASES:200 응답 코드 배열,배열 의 응답 이 요?정확 한 응답 으로 여 겨 집 니 다 CURLOPTHTTPHEADER:사용자 정의 요청 헤더 정 보 는 스 트림 핸들 만 사용 할 수 있 는 옵션:CURLOPTFILE:기록 할 저녁 핸들 을 전송 합 니 다.기본 값 은 표준 출력 CURLOPT 입 니 다.INFILE:읽 을 파일 핸들 전송 CURLOPTSTDERR:표준 오류 로 출력 되 는 대체 옵션 CURLOPTWRITEHEADER:헤더 정 보 를 전송 할 파일 리 셋 함수 옵션 CURLOPTHEADERFUNCTION:두 개의 매개 변 수 를 가 진 리 셋 함수 입 니 다.첫 번 째 는 매개 변 수 는 세 션 핸들 이 고,두 번 째 는 HTTP 응답 헤더 정보의 문자열 입 니 다.이 반전 함 수 를 사용 하면 응답 헤더 정 보 를 스스로 처리 합 니 다.응답 헤더 정 보 를 줄 별로 되 돌려 줍 니 다.반환 값 을 문자열 길이 로 설정 합 니 다.CURLOPT_READFUNCTION:두 개의 매개 변 수 를 가 진 리 셋 함수 입 니 다.첫 번 째 는 매개 변 수 는 세 션 핸들 이 고,두 번 째 는 HTTP 응답 헤더 정보의 문자열 입 니 다.이 함 수 를 사용 하면 되 돌아 오 는 데 이 터 를 스스로 처리 합 니 다.반환 값 은 데이터 크기 입 니 다.CURLOPT_WRITEFINCTION:두 개의 매개 변 수 를 가 진 리 셋 함수 입 니 다.첫 번 째 는 매개 변 수 는 세 션 핸들 이 고,두 번 째 는 HTTP 응답 헤더 정보의 문자열 입 니 다.이 반전 함 수 를 사용 하면 응답 헤더 정 보 를 스스로 처리 합 니 다.응답 헤더 정 보 는 전체 문자열 입 니 다.반환 값 을 문자열 길이 로 설정 합 니 다.다른 CURL 의 예(인터넷 에서 따 온 것)

  /*
  * url
  */
  function isRealUrl($url){
  $ch = curl_init();
  $options = array(
  CURLOPT_URL => $url,
  CURLOPT_HEADER => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_NOBODY => true
  );
  curl_setopt_array($ch, $options);
  curl_exec($ch);
  if(!curl_errno($ch)){
  return 200==curl_getinfo($ch,CURLINFO_HTTP_CODE)?true:false;
  }
  curl_close($ch);
  }

  $url = 'http://testpic1.tomoimg.cn/240x180/394/855/517932781/200901/12312215602409.jpg';
  if(isRealUrl($url)){echo 'yes';}else{echo 'no';}

  / :
  $userid = 517932781;
  $imageid = 1520;
  $albumid = 2637;
  $tags = 'aa';
  extract($_POST);
  $url = 'http://'.$_SERVER['HTTP_HOST'].'/ajax/image.php';
  $fields = array(
  'userid' => $userid,
  'imageid' => $imageid,
  'albumid' => $albumid,
  'tags' => $tags,
  'optype' => 'del'
  );
  $ch = curl_init() ;
  curl_setopt($ch, CURLOPT_URL,$url) ;
  curl_setopt($ch, CURLOPT_POST,true) ;
  curl_setopt($ch, CURLOPT_POSTFIELDS,$fields) ;
  $result = curl_exec($ch) ;
  curl_close($ch) ;

  //
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,'http://lh.tom.com/deal/import.php');
  $fields = array(
  'tname' => ' ',
  'country' => 1,
  'author' => ' ',
  'tags' => ' ',
  'desc' => ' , 。 , 。 。 。 。 。 , 。 , 。',
  'volume' => 2,
  'cover' => '@'.realpath('/data/lianhuanhua/deal/1.jpg')
  );
  curl_setopt($ch, CURLOPT_POST, true) ;
  curl_setopt($ch, CURLOPT_POSTFIELDS, $fields) ;
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  $result = curl_exec($ch);
  curl_close($ch);

  //
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,'http://lh.tom.com/deal/addpic.php');
  $j = 0;
  $fields = array(
  'vid' => 103,
  'upfile['.$j++.']' => '@'.realpath('/data/lianhuanhua/deal/1.jpg'),
  'upfile['.$j++.']' => '@'.realpath('/data/lianhuanhua/deal/2.jpg')
  );
  curl_setopt($ch, CURLOPT_POST, true) ;
  curl_setopt($ch, CURLOPT_POSTFIELDS, $fields) ;
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  $result = curl_exec($ch);
  curl_close($ch);
phop curl 라 이브 러 리 를 파악 하면 하고 싶 은 일 을 많이 할 수 있 습 니 다.하하,얼마 전에 즐 거 운 인터넷 을 하 는 X 세 계 는 전투 가 너무 번 거 로 웠 습 니 다.제 가 직접 전투 조 수 를 썼 습 니 다.이 코드 는 오픈 소스 가 아 닙 니 다.)원 리 를 파악 하 는 것 처럼 오픈 소스 가 이 루어 집 니 다.사이트 카운터

좋은 웹페이지 즐겨찾기