@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.

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

Подскажите что я не так могу делать?
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Амазон так не обманешь. Пользуйтесь API
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 13:47
1000 руб./за проект
26 апр. 2024, в 13:40
4000 руб./за проект
26 апр. 2024, в 13:39
500 руб./за проект