>  기사  >  php教程  >  PHP는 로그인을 시뮬레이션하고 데이터를 가져옵니다.

PHP는 로그인을 시뮬레이션하고 데이터를 가져옵니다.

大家讲道理
大家讲道理원래의
2016-11-08 13:43:501121검색

cURL 이것은 강력한 PHP 라이브러리입니다. PHP의 cURL 라이브러리를 사용하면 간단하고 효과적으로 웹페이지를 크롤링하고 콘텐츠를 수집할 수 있습니다. Curl은 웹페이지 로그인을 시뮬레이션하기 위해 PHP 매뉴얼에서 더 많은 정보를 얻을 수 있습니다. .cURL 정보. 이 문서에서는 cURL 사용을 공유하기 위해 오픈 소스 중국(oschina)에 대한 시뮬레이션된 로그인을 예로 들어 설명합니다.

PHP의 컬()은 웹 페이지 크롤링에 상대적으로 효율적이고 멀티스레딩을 지원하는 반면, file_get_contents()는 약간 덜 효율적입니다. 물론 컬을 사용할 때는 컬 확장을 활성화해야 합니다.

실제 전투 코드


먼저 코드의 로그인 부분을 살펴보겠습니다.

//模拟登录  function login_post($url, $cookie, $post) { 
    $curl = curl_init();//初始化curl模块 
    curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 
    curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 
    curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 
    curl_exec($curl);//执行cURL 
    curl_close($curl);//关闭cURL资源,并且释放系统资源 
}

login_post() 함수를 먼저 살펴보겠습니다. 컬_init()을 초기화한 후, 컬_setopt()를 사용하여 제출할 URL 주소, 저장된 쿠키 파일, 게시물 데이터(사용자 이름 및 비밀번호 등), 정보 반환 여부 등 관련 옵션 정보를 설정한 후 컬_exec 컬을 실행하고 마지막으로 컬_close()가 리소스를 해제합니다. PHP 자체의 http_build_query()는 배열을 연결된 문자열로 변환할 수 있습니다.

다음으로 로그인에 성공했다면 로그인 성공 후 페이지 정보를 얻어야 합니다.

//登录成功后获取数据  function get_content($url, $cookie) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie 
    $rs = curl_exec($ch); //执行cURL抓取页面内容 
    curl_close($ch); 
    return $rs; 
}

또한 get_content() 함수는 컬을 먼저 초기화한 다음 관련 옵션을 설정하고 컬을 실행하며 리소스를 해제합니다. 그 중 CURLOPT_RETURNTRANSFER를 1로 설정하여 자동으로 정보를 반환하고, CURLOPT_COOKIEFILE은 로그인 시 저장된 쿠키 정보를 읽어 최종적으로 페이지 내용을 반환할 수 있습니다.

우리의 궁극적인 목표는 모의 로그인 후 정보를 얻는 것입니다. 이는 일반 로그인이 성공해야만 얻을 수 있는 유용한 정보입니다. 다음으로, 로그인 성공 후 정보를 캡처하는 방법을 알아보기 위해 Open Source China 모바일 버전에 로그인하는 방법을 예로 들어 보겠습니다.

//设置post的数据  $post = array ( 
    'email' => 'oschina账户', 
    'pwd' => 'oschina密码', 
    'goto_page' => '/my', 
    'error_page' => '/login', 
    'save_login' => '1', 
    'submit' => '现在登录' 
); 
  //登录地址  $url = "http://m.oschina.net/action/user/login";  //设置cookie保存路径  $cookie = dirname(__FILE__) . '/cookie_oschina.txt';  //登录后要获取信息的地址  $url2 = "http://m.oschina.net/my";  //模拟登录 
login_post($url, $cookie, $post);  //获取登录页的信息  $content = get_content($url2, $cookie);  //删除cookie文件 
@ unlink($cookie);  //匹配页面信息  $preg = "/<td class=&#39;portrait&#39;>(.*)<\/td>/i"; 
preg_match_all($preg, $content, $arr);  $str = $arr[1][0];  //输出内容  echo $str;

위 코드를 실행하면 드디어 로그인한 사용자의 아바타 이미지가 얻어지는 것을 볼 수 있습니다.

PHP는 로그인을 시뮬레이션하고 데이터를 가져옵니다.

사용 요약

1. 컬 초기화

2. 대상 URL 및 기타 옵션을 설정합니다.

3. 컬을 실행합니다.

4. 실행 후 컬을 닫습니다.

5.

참고자료

"PHP에서 컬과 컬에 대한 소개", 저자 미상, http://www.2cto.com/kf/201208/147091.html

" PHP CURL을 사용한 POST 데이터", 작성자: Veda, http://www.nowamagic.net/librarys/veda/detail/124

"php는 컬을 사용하여 discuz 로그인을 시뮬레이션하고 게시를 시뮬레이션합니다.", 작성자 : tianxin, http://www.cnblogs.com/tianxin2001x/archive/2009/10/28/1591311.html


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