Делать будем простые авы 100×100 выкачивая готовые файлы картинок при помощи curl на php
Вся работа уже выполнена за нас вот этими ребятами https://thispersondoesnotexist.com/
Каждый вызов данного скрипта будет сохранять в папочку img новую аватарку с названием в виде md5 хеша содержимого скачанного оригинала файла. Таким образом файлы мы получим уникальные, вот в таком виде:
<?php // for((i=1;i<=5000;i++)); do echo -n "$i - "; wget -qO- http://localhost/ava_generator/generator.php ; echo ; done; $file = getCURL('https://thispersondoesnotexist.com/image'); if (!$file) { exit; } if (preg_match('#^HTTP/1\.1 403 Forbidden#', $file)) exit('403'); $ex = explode("\r\n\r\n", $file); $img_data = ''; foreach ($ex as $k => $data) { unset($ex[$k]); if (stripos($data, 'content-type: image/') !== false) { $img_data = implode("\r\n\r\n", $ex); break; } else if (preg_match('#^HTTP/(2|1\.1) (404|410)#', $data)) { $img_data = 404; break; } else if (preg_match('#^HTTP/(2|1\.1) 403#', $data)) { $img_data = 403; break; } else if (preg_match('#^HTTP/(2|1\.1) 500#', $data)) { $img_data = 500; break; } } if ($img_data == 403) { exit('403'); } if ($img_data == 404) { exit('404'); } if ($img_data == 500) { exit('500'); } if (!$img_data) { exit('empty img'); } $im = imagecreatefromstring($img_data); $im_width = imagesx($im); $im_height = imagesy($im); $im_copy = imagecreatetruecolor(100, 100); imagecopyresampled($im_copy, $im, 0, 0, 0, 0, 100, 100, $im_width, $im_height); file_exists('img') or mkdir('img', 0755, true); imagejpeg($im_copy, 'img/'.md5($img_data).'.jpg', 70); imagedestroy($im_copy); imagedestroy($im); echo 'OK'; function getCURL( $url, $t = 60, $header = true ) { $url = trim($url); $headers = [ 'GET ' . parse_url($url, PHP_URL_PATH) . ' HTTP/1.1', 'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1', 'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8', 'Connection: Keep-Alive' ]; $ua = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 OPR/64.0.3417.92', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36' ]; shuffle($ua); $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, $header); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $ua[0]); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, $t); $file = curl_exec($ch); curl_close($ch); return $file; }
Ну и чтобы не вызывать каждый раз вручную, запилим в командную строку такой код, который сделает нам 5000 вызовов и отчитается по ходу дела.
for((i=1;i<=5000;i++)); do echo -n "$i - "; wget -qO- http://localhost/ava_generator/generator.php ; echo ; done;