На хабре расписано как действует скрипт, но посту уже 3 года и что-то поменялось:
На сайте lightshot (prnt.sc) существует баг, как и на некоторых других похожих сервисах - доступ к картинке можно получив банально перебором символов в URL.
В lightshot это устроено следующей маской:
prnt.sc/......, вместо многоточия идет 4-5 символов (пока, потом возможно и больше) в диапазоне [a-z; 0–9]
Раньше маска была другой: prnt.sc/1..... и после единицы все было точно также
По этому php нужно подредактировать и под новую маску. Подскажите и с этим, что кроме самих ссылок [prnt.sc/1..... -> prnt.sc/......] менять нужно?
Скрипт генерирует ссылку, переходит на нее, проверяет есть ли по ней изображение (и "говорит" об этом), берет на картинку прямую ссылку и по ней качает изображение в папку images.
Делаю все так же как и автор через Denwer.
*папку images я создал рядом с самим php фалом (надеюсь правильно)
Вот сам php:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- function random_string($length){ // функция генерации рандомной строки
- $chars = "abcdefghijklmnopqrstuvwxyz1234567890"; // символы из которых генерируем
- $string = ''; // задаем пустую переменную
- for ($i = 0; $i < $length; $i++) { // Собираем строку
- }
- return $string; // Возвращаем готовую строку
- }
- while (1) {
- $randstring = random_string(5); // генерируем рандомную сроку
- $htmldata = file_get_contents('http://prnt.sc/1'.$randstring); // подставляем рандомную строку и получаем код страницы
- preg_match_all('/<meta name=\"twitter:image:src\" content=\"(.*?)\"\/>/is',$htmldata,$img_url); // парсим регуляркой url картинки
- if (strlen($img_url[1][0]) > 1) { // проверяем длину полученной строки, если больше 1 - картинка по этому адресу есть
- $localpath = "./images/".$localname; // определяем куда будет сохраняться картинка локально. у меня заранее создана папка images
- file_put_contents($localpath, file_get_contents($img_url[1][0])); // скачиваем, можно было бы реализовать через curl, но на мой взгляд это проще и быстрее
- echo "<span style='color: green; display: block; margin-bottom: 50px;'>Сохранение - ".$localname." , url - http://prnt.sc/1".$randstring." , скачиваем с ".$img_url[1][0]."</span>";
- } else {
- echo "<span style='color: red; display: block; margin-bottom: 50px;'>По адресу http://prnt.sc/1".$randstring." нет картинки</span>";
- }
- }
- ?>