1 2 3 4 5 6 L

Page Header > Subtitle

[PHP] php curl 을 이용한 자동 로그인

<?php
 
#크론 다이렉트로 안 걸림. wget, curl, GET 등으로 걸어야 됨.
define('AGENT', 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko');
define('COOKIE', 'cookie.txt');
 
$today = date("Y-m-d H:i:s");
$url = 'http://www.site.com/login_check.php';
$post_data["mb_id"] = "아이디";
$post_data["mb_password"] = "패스워드";
 
 
#<a href="http://kr.php.net/manual/kr/function.curl-setopt.php" target="_blank">http://kr.php.net/manual/kr/function.curl-setopt.php</a>
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//접속할 URL 주소
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);#FALSE 를 설정하면 cURL는 서버 인증서의 유효성을 검사하지 않습니다.#다른 인증를 CURLOPT_CAINFO 옵션 지정하거나 CURLOPT_CAPATH 옵션 증명서 디렉토리를 지정합니다.
#curl_setopt ($ch, CURLOPT_SSLVERSION,1); #SSL 버젼 지정. 기본값은 2
curl_setopt($ch, CURLOPT_HEADER, 1);#TRUE 를 설정하면 헤더의 내용을 출력합니다.
curl_setopt($ch, CURLOPT_POST, 1);#TRUE 를 설정하면 HTTP POST를 수행합니다. POST는 application / x - www - form - urlencoded 식으로 이루어집니다. 이것은 일반적인 HTML 양식과 같은 형식입니다.
curl_setopt($ch, CURLOPT_USERAGENT, AGENT);#HTTP 요청에서 사용되는 "User - Agent :" 헤더의 내용.
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE);#curl_close 호출 될 때 쿠키를 파일 이름으로 저장.
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE);#쿠키의 데이터를 http 헤더를 통해 보낸다.
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);#POST 로 데이터 전송.
curl_setopt($ch, CURLOPT_TIMEOUT, 30);#최대 실행 시간(초)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);#TRUE 를 설정하면 curl_exec () 의 반환 값을 문자열로 반환합니다. 일반적으로 데이터를 직접 출력합니다.
$result = curl_exec($ch);
 
# login 후
$url = 'http://www.site.com/check.php';
$post_data["data1"] = "data";
$post_data["data3"] = "출석체크 합니다.";
 
curl_setopt($ch, CURLOPT_URL, $url);
//접속할 URL 주소
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, AGENT);
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE);
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
 
$file = fopen("./curl.log" , "a+") ;
 
// Check if any error occured
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
fwrite($file , "$today : Curl error: ' . curl_error($ch) \n"); 
}
 
curl_close($ch);
#echo $result;
 
$mystring = $result;
$findme = '출석완료';
$pos = strpos($mystring, $findme);
 
 
if ($pos === false) {
fwrite($file , "$today : FALSE \n");
fwrite($file , "$result \n");
} else {
//echo $pos;
//echo "login Succecs";
fwrite($file , "$today : success \n"); 
}
 
fclose($file);
 
?>​ 

 

<?php
 
function scrap()
{
 $geturl="로그인후 스크랩할 주소";
 
 $loginurl = '로그인 주소';
 
 $postfields = 'id=아이디&password=비밀번호';
 
 $cookieFile = $this->auth_site_cookie_store($loginurl,$postfields);
 
 echo $result = $this->auth_site_get($geturl, "/저장경로/".$cookieFile, $postfields);
}
 
function auth_site_cookie_store($loginurl, $postfields)
{
 $parseURL = parse_url($loginurl);
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,"$loginurl");
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, "$postfields");
 curl_setopt($ch, CURLOPT_COOKIEJAR, "/저장경로/".$parseURL['host'].".cookie");
 
 ob_start();
 curl_exec ($ch);
 ob_end_clean();
 curl_close ($ch);
 
 return $parseURL['host'].".cookie";
}
 
function auth_site_get($geturl, $cookiefile, $postfields)
{
 $parseURL = parse_url($geturl);
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_HEADER, 1 );
 curl_setopt($ch, CURLOPT_POST,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_TIMEOUT,100);
 
 curl_setopt($ch, CURLOPT_COOKIEJAR, "/저장경로/".$parseURL['host'].".cookie");
 curl_setopt($ch, CURLOPT_COOKIEFILE, "$cookiefile");
 
 curl_setopt($ch, CURLOPT_URL,"$geturl");
 $result = curl_exec ($ch);
 curl_close ($ch);
 
 return $result;
}
?>​ 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

PHP/Python

번호 제목 글쓴이 날짜 조회수
77 PHP 정말로 URL이 존재 하는지를 알고 싶다면 미도어묵 01-12 1,140
76 PHP [Nginx PHP-FPM] 페이지 access denied. 뜨는 현상 (see security.limit_extensions) - php7 … 미도어묵 11-05 1,359
75 PHP PHP를 이용한 심플한 게시판 파싱 미도어묵 11-01 1,197
74 PHP CI3 / php7.1 이상 버전 session 버그시~~~ 미도어묵 10-31 775
73 PHP PHP 5 Forms - Validate E-mail and URL 미도어묵 10-01 735
72 PHP php 전화번호 정규식 미도어묵 06-25 842
71 PHP 문자열에 휴대폰번호가 있으면 010-***-****으로 변경. 미도어묵 06-25 833
70 PHP 영상 썸네일 api function 미도어묵 02-13 824
69 PHP php memcached example 미도어묵 01-02 768
68 PHP php curl 을 이용한 자동 로그인 미도어묵 12-22 959
67 PHP Home / APIs / Requests::register_autoloader() – Register the built-in autoloader 미도어묵 12-21 840
66 PHP 업로드된 이미지 정사각형으로 썸네일 만드는 함수 미도어묵 11-01 840
65 PHP PHP + redis(phpredis) 연동하기 기본 사용 샘플 미도어묵 09-18 1,450
64 PHP Simple PHP MySQL Rest API Sample Example Tutorial 미도어묵 09-15 805
63 PHP Creating a simple REST API in PHP 미도어묵 09-15 792
62 PHP 게시물이 삭제 되었습니다 관리자 08-30 891
61 PHP php 링크 파일 다운받기 관리자 08-28 816
60 PHP php용 형태소 분석기 설치 및 바인딩과 실사용 +1 관리자1 08-28 1,153
59 PHP PHP로 HTML DOM 파싱하기 관리자 08-25 816
58 PHP PHP7: install ext-dom issue(composer require --dev phpunit/phpunit) 관리자 08-04 850