Мне интересно, возможно ли врезаться в 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');
}
}