PHP cURL 模拟Amazon登陆

<?php
    function AmazonSimulateLogin()
    {
        $email    = 'xxxxxx';
        $password = 'xxxxxxxx';
		//登陆地址
        $URL = 'https://sellercentral.amazon.com/gp/homepage.html';

        $ch  = curl_init();

        curl_setopt($ch, CURLOPT_URL, $URL);
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        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_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        //curl_setopt($ch, CURLOPT_VERBOSE, true);
        curl_setopt($ch, CURLOPT_STDERR,  fopen('php://stdout', 'w'));
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

        $page = curl_exec($ch);
		//找到form
        if (!preg_match('/<form.*name="signinWidget".*?<\/form>/is', $page, $form)) {
			echo 'no form';
            return true;
        }

        $form = $form[0];
		//找到提交的地址
        if (!preg_match('/action=(?:\'|")?([^\s\'">]+)/i', $form, $action)) {
			echo 'no action';
            return true;
        }

        $URL2 = $action[1]; 
		//找到token
        $count = preg_match_all('/<input type="hidden"\s*name="([^"]*)"\s*value="([^"]*)"/i', $form, $hidden);

        $post = array();
		//拼接post
        for ($i = 0; $i < $count; ++$i) {
            $post[$hidden[1][$i]] = $hidden[2][$i];
        }

        $post['username'] = $email;
        $post['password'] = $password;

        $postURL = '';

        foreach($post as $key => $value) {
            $postURL .= $key . '=' . urlencode($value) . '&';
        }

        $postURL = substr($postURL, 0, -1);
        curl_setopt($ch, CURLOPT_URL, $URL2);
        curl_setopt($ch, CURLOPT_REFERER, $URL);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_post, $postURL);
        $page = curl_exec($ch); // request
        return true;
    }


你可能感兴趣的:(PHP cURL 模拟Amazon登陆)