لاگین کردن در گوگل توسط cURL
#1
Note 
سلام
بعضی از دوستان سوال پرسیدن که چطور میشه صفحه ای بسازیم و از اونجا تو گوگل لاین کنیم؟
راه حل استفاده از cURL هست. با استفاده از cURL میتونید مثل یک مرورگر درخواست های http بفرستید. در واقع این Library مثل یک مرورگر عمل میکنه.

در مثال پایین با بکارگیری cURL میتونیم این کار رو انجام بدیم ، در ضمن این کد تست شده و بدرستی کار میکنه.

کد php:
<?php
$USERNAME 
'mail@gmail.com';
$PASSWORD 'passwd';
$COOKIEFILE 'cookies.txt';

$ch curl_init();
curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_COOKIEJAR'COOKIEJAR');
curl_setopt($chCURLOPT_COOKIEFILE'COOKIEJAR');
curl_setopt($chCURLOPT_HEADER0);  
curl_setopt
($chCURLOPT_RETURNTRANSFER,1);
curl_setopt($chCURLOPT_CONNECTTIMEOUT120);
curl_setopt($chCURLOPT_TIMEOUT120);

curl_setopt($chCURLOPT_URL
 
 'https://accounts.google.com/ServiceLogin?service=mail&continue=https://mail.google.com/mail/');
$data curl_exec($ch);

$formFields getFormFields($data);

$formFields['Email' $USERNAME;
$formFields['Passwd'] = $PASSWORD;
unset(
$formFields['PersistentCookie']);

$post_string '';
foreach(
$formFields as $key => $value) {
 
   $post_string .= $key '=' urlencode($value) . '&';
}

$post_string substr($post_string0, -1);

curl_setopt($chCURLOPT_URL'https://accounts.google.com/ServiceLoginAuth');
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$post_string);

$result curl_exec($ch);
if (
strpos($result'Loading standard view') === false) {
 
   die("Login failed");
} else {
 
   curl_setopt($chCURLOPT_URL'https://gmail.com');
 
   curl_setopt($chCURLOPT_POST0);
 
   curl_setopt($chCURLOPT_POSTFIELDSnull);

 
   $result curl_exec($ch);
    die(
'Successfully logged in');
 
   //var_dump($result);
}

function 
getFormFields($data)
{
 
   if (preg_match('/(<form.*?id=.?gaia_loginform.*?<\/form>)/is'$data$matches)) {
 
       $inputs getInputs($matches[1]);

 
       return $inputs;
 
   } else {
 
       die('didnt find login form');
 
   }
}

function 
getInputs($form)
{
 
   $inputs = array();

 
   $elements preg_match_all('/(<input[^>]+>)/is'$form$matches);

 
   if ($elements 0) {
 
       for($i 0$i $elements$i++) {
 
           $el preg_replace('/\s{2,}/'' '$matches[1][$i]);

 
           if (preg_match('/name=(?:["\'])?([^"\'\s]*)/i'$el$name)) {
 
               $name  $name[1];
 
               $value '';

 
               if (preg_match('/value=(?:["\'])?([^"\'\s]*)/i'$el$value)) {
 
                   $value $value[1];
 
               }

 
               $inputs[$name] = $value;
 
           }
 
       }
 
   }

 
   return $inputs;



نکته: برای فعال کردن cURL  فایل php.ini که در مسیر نصب php وجود داره رو با یه ویرایشگر متن باز کنید و کد
کد:
;extension=php_curl.dll
رو با حذف سمیکالن( ; ) از ابتدای اون از حالت کامنت خارج کرده و در نهایت فایل رو ذخیره کنید.

موفق باشید.

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note کار با CURL WWWorker 0 611 08-08-2014 ساعت 13:33
آخرین ارسال: WWWorker
Note سوال: انتقال فایل با FTP توسط PHP Ali Developer 1 530 03-07-2013 ساعت 19:45
آخرین ارسال: SOFTAFZAR

کاربرانِ درحال بازدید از این موضوع:   1 مهمان