Можно ли сделать прокси с помощью file_get_contents () или cURL? - PullRequest
4 голосов
/ 26 января 2012

Я только что возился с file_get_contents() в школе и заметил, что это позволяет мне открывать в школе веб-сайты, которые находятся в черном списке.

Только несколько вопросов:

Нетзагрузка изображений

Щелчок по ссылке на веб-сайте просто возвращает меня на исходную заблокированную страницу.

Я думаю, что знаю способ устранения проблемы со ссылками, но на самом деле не продумал ее.. Я мог бы сделать str_replace для содержимого из file_get_contents, чтобы заменить любую ссылку другой функцией file_gets_contents() для этой ссылки ... верно?

Было бы проще, если бы явместо этого использовал cURL?

То, что я пытаюсь сделать, даже возможно, или я просто трачу свое ценное время?

Я знаю, что это нехороший способ сделать что-то подобное, но это всего лишь мысль, и это меня заинтересовало.

Ответы [ 2 ]

2 голосов
/ 26 января 2012

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

Имейте в видучто вам нужно будет иметь дело с (для начала, это не полный список):

  • Относительные и абсолютные пути, которые могут или не могут извлекать внешний контент
  • Якоря, формы, изображения и любое количество других HTML-элементов, которые могут ссылаться на внешний контент и могут или не могут явно указывать контент, на который они ссылаются.
  • Код CSS и JS, который ссылается на внешний контент, включая JSэто модифицирует DOM для создания элементов с click событиями, которые действуют как ссылки, чтобы назвать только одну проблему.

Это довольно гигантская задача.Лично я бы посоветовал вам не беспокоиться - вы, вероятно, тратите свое ценное время.

Тем более, что некоторые приятные люди уже сделали большую часть работы за вас:

; -)

0 голосов
/ 26 января 2012

Ваша "проблема" связана с тем, что HTTP является протоколом без сохранения состояния , а различные ресурсы, такие как css, js, images и т. Д., Имеют свои собственные URL-адреса, поэтому для каждого из них требуется запрос.Если вы хотите сделать это самостоятельно, а не использовать php-proxy или аналогичный, это «довольно тривиально»: вы должны очистить html и нормализовать его с tidy до xml (xhtml), затем обработайте его с помощью DOMDocument и XPath .

Из этого можно многому научиться - это не слишком сложно, но включает несколько интересных«технологии».

То, что вы в конечном итоге получите так называемым гусеничным или скребком для экрана .

...