PHP cURL uzantısı kullanarak iki web sitesi arasındaki aynı çerez paylaşıyoruz

1 Cevap php

Benim gmail hesabımda bazı e-postaların içeriğini almak istiyorum. Bunu yapmak için PHP cURL uzantısını kullanmak istiyorum. Benim ilk denemede bu adımları takip:

  1. PHP kodu, çıkış içeriği https://www.google.com/accounts/ServiceLoginAuth.
  2. Tarayıcıda, kullanıcı giriş kullanıcı adı ve şifre giriş.
  3. PHP kodu, cookie.txt adlı bir dosyada çerezleri kaydedebilirsiniz.
  4. PHP kodu, https://mail.google.com/ cookie.txt ve çıkış içeriği alınan kurabiye ile birlikte isteği gönderin.

Aşağıdaki kod çalışmaz:

$login_url = 'https://www.google.com/accounts/ServiceLoginAuth';
$gmail_url = 'https://mail.google.com/';
$cookie_file = dirname(__FILE__) . '/cookie.txt';

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_URL, $login_url);
$output = curl_exec($ch);
echo $output;

curl_setopt($ch, CURLOPT_URL, $gmail_url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$output = curl_exec($ch);
echo $output;

curl_close($ch);

1 Cevap

Sizin yaklaşım yanlıştır. Sen, https://www.google.com/accounts/ServiceLoginAuth ve bunu çıktı içeriğini almak kullanıcı bilgi ve basın giriş doldurmak için bekleyemeyiz. Form olarak tanımlanır yana

<form action="https://www.google.com/accounts/ServiceLoginAuth" method="post">

giriş bilgileri o sayfaya tarayıcı tarafından sunulacak ve komut çerezleri ele almak asla. Sen https://www.google.com/accounts/ServiceLoginAuth already with the username and password için bir post isteği göndermeniz gerekir. Sadece o kıvırmak kurabiye ile bir yanıt alırsınız.

O dedi, ben e-posta erişimi için GMail IMAP etkinleştirmek ve kullanmak, tüm bu kazımak öneririm.