@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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы