Как я могу войти в Amazon с помощью PHP cURL

Мне нужно войти на страницу Amazon: https://sellercentral-japan.amazon.com/gp/sign-in/sign-in.html/ref=pt_login_lgin_login с PHP cURL (без Amazon Web Service).

Вот код, как я пытался это сделать:

const AMAZON_LOGIN_URL = "https://sellercentral-japan.amazon.com/gp/sign-in/sign-in.html/ref=pt_login_lgin_login";

$this->crawler = new crawler();        
// login with Amazon account
$parameters ='protocol=https&action=sign-in&email='.self::AMAZON_USER.'&password='.self::AMAZON_PWD;
$status = $this->crawler->logIn(self::AMAZON_LOGIN_URL, $parameters);

/* in crawler class */
//This is used for login.
function logIn($loginActionUrl, $parameters) {
    $strCookie = 'D:\public_html\project\cookie.txt';

    curl_setopt($this->curl, CURLOPT_URL, $loginActionUrl);
    curl_setopt($this->curl, CURLOPT_POST, 1);
    curl_setopt($this->curl, CURLOPT_POSTFIELDS, $parameters);

    curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($this->curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($this->curl, CURLOPT_HEADER, 0);

    curl_setopt($this->curl, CURLOPT_COOKIEJAR, $strCookie);
    curl_setopt($this->curl, CURLOPT_COOKIEFILE, $strCookie);

    $content = curl_exec($this->curl);
    return $content;
}

В ответ я получаю страницу входа с сообщением об ошибке: «Ваш сеанс входа в систему истек. Пожалуйста, войдите снова». И это сообщение также отображается:

"Не обнаружена

Запрошенный URL-адрес /aan/2009-09-09/static/amazon/iframeproxy-12.html не найден на этом сервере».

Я пробовал большинство решений, найденных в Интернете. Это решение было обнадеживающим, но все еще не работало: PHP Curl - проблема с файлами cookie Я изменил требуемую страницу входа URL и внес несколько других изменений, но выдает эту ошибку:

"При попытке выполнить эту операцию произошла ошибка. Повторите попытку через 15 минут". даже через 15 минут выдает ту же ошибку.

Если кто-то может помочь, это будет помощь.

Спасибо.


person Kulin Choksi    schedule 16.06.2012    source источник
comment
Я проверил эту страницу, и вы должны: 1- запросить страницу и сохранить файлы cookie 2- отправить данные для входа, используя файлы cookie, которые вы получили от предыдущего запроса!   -  person undone    schedule 16.06.2012
comment
Это класс? Пожалуйста, покажите другие части   -  person Shiplu Mokaddim    schedule 16.06.2012
comment
@shiplu.mokadd.im: Как видите, функция входа в систему не зависит от других частей класса, вы можете рассматривать ее как независимую процедуру.   -  person Kulin Choksi    schedule 16.06.2012
comment
@Death: Да, я думаю, что для этой цели мы использовали CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE. Думаете, для этого нужно что-то еще? Пожалуйста, дополните.   -  person Kulin Choksi    schedule 16.06.2012
comment
Я знаю, почему вы их использовали, но для нового входа в систему вам нужны новые данные сеанса, и у вас не может быть этих файлов cookie, если вы не запросите новые ;-)   -  person undone    schedule 16.06.2012
comment
И еще кое-что: вам нужно отправить ВСЕ скрытые входные данные обратно на сервер (например, session-id,ouid,optin,...)   -  person undone    schedule 16.06.2012
comment
@Death: Вы правы, я еще раз проверил, и в обратной передаче пропали некоторые скрытые поля. Теперь работает. Большое спасибо :-). Если вы можете добавить свой комментарий в качестве ответа, я могу принять его.   -  person Kulin Choksi    schedule 16.06.2012


Ответы (2)


Просто для того, чтобы пометить как ответ:
вам нужно сделать 2 вещи:

  1. Запросить страницу входа с сервера с помощью метода get
  2. Отправить данные для входа с использованием нового сеанса и со скрытыми входами

чтобы увидеть скрипт: https://stackoverflow.com/a/7532730/889678

person undone    schedule 16.06.2012

Используйте их официальный API Curl... См. пример php здесь http://login.amazon.com/website

person giorgio79    schedule 25.06.2014