войдите с помощью curl и получите сессию - PullRequest
2 голосов
/ 23 мая 2011

Привет, мне нужно как-то, чтобы получить топовый Региональный интерес и интерес с течением времени от

http://www.google.com/trends?q=lingerie+&ctab=0&geo=id&date=all&sort=0

или лучше

http://www.google.com/insights/search/#q=lingerie&geo=ID&cmpt=q

, поэтому я узнал, что нам нужно войти в систему для экспорта данных Кто-нибудь может привести пример с нашим именем пользователя и паролем Google? может быть, использовать curl для экспорта данных? или что-то еще

Спасибо, что заглянули в

Адам Рамадан

Ответы [ 3 ]

5 голосов
/ 08 июня 2011

Просто, чтобы быть быстрым в этом, я использовал мой класс xhttp , который является оберткой для завитков, и я думаю, что код достаточно прост, чтобы следовать.

<?php

header('content-type: text/plain');

// Set account login info
$data['post'] = array(
  'accountType' => 'HOSTED_OR_GOOGLE',  // indicates a Google account
  'Email'       => '',  // full email address
  'Passwd'      => '',
  'service'     => 'trendspro', // Name of the Google service
  'source'      => 'codecri.me-example-1.0' // Application's name, e.g. companyName-applicationName-versionID
);

$response = xhttp::fetch('https://www.google.com/accounts/ClientLogin', $data);

// Test if unsuccessful
if(!$response['successful']) {
    echo 'response: '; print_r($response);
    die();
}

// Extract SID
preg_match('/SID=(.+)/', $response['body'], $matches);
$sid = $matches[1];

// Erase POST variables used on the previous xhttp call
$data = array();

// Set the SID in cookies
$data['cookies'] = array(
    'SID' => $sid
);

$response = xhttp::fetch('http://www.google.com/insights/search/overviewReport?q=lingerie&geo=ID&cmpt=q&content=1&export=1', $data);

// CSV data in the response body
echo $response['body'];

?>

Результатв: http://codecri.me/apps/test/test.google.trends.php Но я не уверен, что результат, который вы ищете.

1 голос
/ 24 апреля 2012

С апреля 2012 года Google изменил свою политику авторизации, измените код Арвина следующим образом:

// Extract Auth
preg_match('/Auth=(.+)/', $response['body'], $matches);
$auth = $matches[1];

// Erase POST variables used on the previous xhttp call
$data = array();

// Set the Authorization header
$data['headers'] = array(
    'Authorization' => 'GoogleLogin auth='.$auth
);
0 голосов
/ 08 июня 2011

Страница man curl описывает, как предоставить имя пользователя и пароль.Вы пробовали флаг -u?

-u / - user Укажите имя пользователя и пароль для аутентификации на сервере.Переопределяет -n / - netrc и --netrc-необязательно.

   If you just give the user name (without entering a colon) curl will prompt for a password.

   If you use an SSPI-enabled curl binary and do NTLM authentication, you can force curl to pick up the user name  and  password from your environment by simply specifying a single colon with this option: "-u :".

   If this option is used several times, the last one will be used.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...