Войдите в ThinkStock с помощью cUrl - PullRequest
0 голосов
/ 17 июня 2011

Мне интересно, возможно ли врезаться в ThinkStock.Мои исследования / исследования до сих пор дали следующее:

  • Страница авторизации https://secure.thinkstockphotos.com/Authentication/SignIn устанавливает требуемые куки - Попробуйте очистить доменные куки после посещения этой страницы, затем войдите,он будет держать вас на этой странице.

  • Если я попытаюсь получить эти файлы cookie в одном запросе без отправки данных POST для входа в систему, то при следующем запросе запросит CAPTCHA.

Я не уверен, что делать на данный момент, я пробовал сопоставлять заголовки как можно лучше, используя рефереры, пользовательский агент FF4, но этого недостаточно.Мне было интересно, сталкивался ли кто-нибудь с этим раньше с ThinkStock.

Отказ от ответственности: это не скребок, а создание базы данных изображений из наших предыдущих загрузок для более легкого доступа к дизайнерам нашего агентства / без необходимостиуменьшив лимит загрузки на этот день.

Мой код для первоначального подключения:

function __construct(
    $username = THINKSTOCK_USERNAME, $password = THINKSTOCK_PASSWORD){

    // create the cookie file
    $this->cookieFile = tempnam('./cookies', '');
    //******** Connect to host and try and get cookies required for auth *******//
    // initialise the CURL connection
    $curlRequest = curl_init('https://secure.thinkstockphotos.com/Authentication/SignIn');

    // do not attempt to verify the SSL certificate
    curl_setopt($curlRequest, CURLOPT_SSL_VERIFYPEER, false);

    // set curl to follow up to two redirects
    curl_setopt($curlRequest, CURLOPT_FOLLOWLOCATION, true);
    // curl_setopt($curlRequest, CURLOPT_MAXREDIRS, 5);
    curl_setopt($curlRequest, CURLOPT_REFERER, 'https://secure.thinkstockphotos.com/Authentication/SignIn');
    // set curl to timeout after two seconds
    curl_setopt($curlRequest, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($curlRequest, CURLOPT_TIMEOUT, 5);

    // set the cookie file
    curl_setopt($curlRequest, CURLOPT_COOKIEJAR, $this->cookieFile);

    // set the POST data
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1');


    // do not output the returned data
    curl_setopt($curlRequest, CURLOPT_RETURNTRANSFER, true);

    // execute the curl request and close the connection
    $response = curl_exec($curlRequest);
    var_export($response);
    curl_close($curlRequest);


    //******** Connect to host with cookies and gogogo auth *******//
    // initialise the CURL connection
    $curlRequest = curl_init('https://secure.thinkstockphotos.com/Authentication/SignIn');

    // do not attempt to verify the SSL certificate
    curl_setopt($curlRequest, CURLOPT_SSL_VERIFYPEER, false);

    // set curl to follow up to two redirects
    curl_setopt($curlRequest, CURLOPT_FOLLOWLOCATION, true);
   // curl_setopt($curlRequest, CURLOPT_MAXREDIRS, 5);
    curl_setopt($curlRequest, CURLOPT_REFERER, 'https://secure.thinkstockphotos.com/Authentication/SignIn');
    // set curl to timeout after two seconds
    curl_setopt($curlRequest, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($curlRequest, CURLOPT_TIMEOUT, 5);

    // set the cookie file
    curl_setopt($curlRequest, CURLOPT_COOKIEFILE, $this->cookieFile);
    curl_setopt($curlRequest, CURLOPT_COOKIEJAR, $this->cookieFile);

    // set the POST data
    curl_setopt($curlRequest, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1');


    // do not output the returned data
    curl_setopt($curlRequest, CURLOPT_RETURNTRANSFER, true);


    curl_setopt(
        $curlRequest,
        CURLOPT_POSTFIELDS,
        array(
          'userName' => $username,
          'password' => $password,
          'returnUrl' => '/',
          'SignInButton' => ''
        ));

    // execute the curl request and close the connection
    $response = curl_exec($curlRequest);
    curl_close($curlRequest);
    var_export($response);
    // if the log in attempt failed, throw an exception
    if (strpos($response, 'https://secure.thinkstockphotos.com/Authentication/SignIn') !== false){
      throw new Exception('Incorrect log-in details');
    }

}

1 Ответ

0 голосов
/ 22 июня 2011

Условия обслуживания ThinkStock запрещают то, что вы пытаетесь сделать. Даже если у вас есть права на изображения, поскольку вы заплатили за их загрузку и т. Д., Они не позволяют доступ к сайту через автоматизацию. Я думаю, вам нужно связаться с ними для получения разрешения, а затем спросить, есть ли альтернативная страница входа, которую вы можете использовать. Учитывая характер того, что вы хотите сделать, они могут смягчиться (поскольку вы не пытаетесь сорвать сайт, просто упростите доступ к лицензированному вами контенту)

Использование сайта

Этот сайт и Контент Thinkstock предназначен для клиенты Thinkstock. Вы не можете использовать этот сайт или Thinkstock Контент для любых целей, не связанных с ваш бизнес с Thinkstock. Вы специально запрещено: (а) загрузка, копирование или повторная передача любого или всего Сайта или Содержимое Thinkstock без, или в нарушение письменной лицензии или соглашение с Thinkstock; (б) с использованием любой интеллектуальный анализ данных, роботы или аналогичные методы сбора или извлечения данных; (в) манипулировать или иным образом отображение сайта или Thinkstock Контент с использованием создания или аналогичного навигационные технологии; (Д) регистрация, подписка, отписаться или пытаться зарегистрироваться, подписаться или отписаться любая вечеринка для любого продукта Thinkstock или услуга, если вы не явно уполномоченный такой стороной сделать это; а также (e) использование Сайта или Thinkstock Контент, отличный от предназначенного цель. Такое несанкционированное использование может также нарушать действующее законодательство, в том числе без ограничения авторских прав и законы о товарных знаках, законы о конфиденциальности и гласность, и применимо правила связи и Уставы.

...