Получение изображений с HTTP-запросом в C - PullRequest
1 голос
/ 28 ноября 2011

Я пишу программу на C, которая действует как прокси-сервер в системе Linux: клиент запрашивает ее для веб-страницы, отправляет HTTP-запрос GET на удаленный сервер и получает ответ сервера (веб-страница), которая сохраняется в файле .html.

Вот моя проблема: на большинстве веб-сайтов есть ссылки на изображения, поэтому при попытке просмотреть созданный прокси-файл .html изображения не отображаются.

Я много искал, но ничего не нашел .. Есть ли способ написать код для изображений GET?

Заранее спасибо

1 Ответ

1 голос
/ 28 ноября 2011

Вам нужно будет написать код, который анализирует полученный вами HTML-файл и ищет ссылки на изображения (теги img), а затем запрашивает у сервера эти файлы изображений. Это то, что веб-браузеры делают под капотом.

У вас есть дополнительная проблема, заключающаяся в том, что ссылки на изображения в файле HTML относятся к исходному серверу. Я предполагаю, что, поскольку они не загружают для вас, сервер, который вернул исходный HTML, недоступен. В этом случае после того, как вы получите каждый файл изображения, вам нужно будет дать ему имя в локальной файловой системе, а затем изменить ссылку в HTML (программно), чтобы указать новое имя локального изображения.

Так, например:

<img src='http://example.com/image1.png'>

станет

<img src='localImage1.png'>

Если вы запрашиваете произвольные веб-сайты, вы также обнаружите, что есть и другие файлы, которые вам нужно сделать, например CSS-файлы и JavaScript-файлы. В общем, трудно точно отразить произвольные веб-страницы - браузеры имеют сложные объектные модели, которые они используют для интерпретации веб-страниц, потому что им приходится иметь дело с такими вещами, как CSS и Javascript, и вам может потребоваться иметь возможность «запускать» весь этот динамический код для выравнивания убедитесь, что файлы для загрузки с сервера (например, JavaScript, включая другие JavaScript и т. д.).

...