Задать вопрос
@Zimaell

Как авторизоваться на амазоне через CURL PHP?

Написал функцию для входа на амазон (нужно для некоторых действий авторизовываться)

function amazon_authorization($email,$password){
	$cookie_file='/var/www/html/cookies/'.md5(date("Y-m-d H:i:s")).'.txt';
	$fp=fopen($cookie_file,'w'); fclose($fp);
	$url='https://www.amazon.co.uk/ap/signin?_encoding=UTF8';
	$url.='&ignoreAuthState=1';
	$url.='&openid.assoc_handle=gbflex';
	$url.='&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select';
	$url.='&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select';
	$url.='&openid.mode=checkid_setup';
	$url.='&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0';
	$url.='&openid.pape.max_auth_age=0';
	$url.='&openid.return_to=https%3A%2F%2Fwww.amazon.co.uk%2F%3Fref_%3Dnav_signin';
	$url.='&switch_account=';
	# заходим на страницу авторизации
	$ch=curl_init();
	curl_setopt($ch,CURLOPT_URL,$url);
	curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
	curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
	curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0');
	curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
	$content=curl_exec($ch);
	# Получение скрытых полей
	$url_referer=$url;
	if(!preg_match('/<form name="signIn".*?<\/form>/is',$content,$form)) die('Failed to find log in form!');
	$form=$form[0];
	if(!preg_match('/action=(?:\'|")?([^\s\'">]+)/i',$form,$act)) die('Failed to find login form url');
	$url=$act[1];
	$c=preg_match_all('/<input type="hidden"\s*name="([^"]*)"\s*value="([^"]*)"/i',$form,$hiddenFields);
	$postFields=array();
	for($i=0; $i<$c; ++$i){ $postFields[$hiddenFields[1][$i]] = $hiddenFields[2][$i]; }
	# добавление своего пароля и логина
	$postFields['email']=$email;
	$postFields['password']=$password;
	$post='';
	foreach($postFields as $key=>$value){ $post.=$key.'='.urlencode($value).'&'; }
	$post=substr($post,0,-1);
	# авторизация
	curl_setopt($ch,CURLOPT_URL,$url);
	curl_setopt($ch,CURLOPT_REFERER,$url_referer);
	curl_setopt($ch,CURLOPT_POST,TRUE);
	curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
	$content=curl_exec($ch);
	curl_close($ch);

	echo $content;

	unlink($cookie_file);
	return true;
	}

Итог - выдает капчу

Important Message!
To better protect your account, please re-enter your password and then enter the characters as they are shown in the image below.

Проверил, все скрытые поля совпадают, вроде все правильно, но всегда капча...

Подскажите что я не так могу делать?
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Амазон так не обманешь. Пользуйтесь API
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽