PHP - Utilizando proxy e CURL para acessar servidores ou sites



Proxies são extremamente úteis, principalmente para usuários avançados, e se você não sabe exatamente o que são recomendo a leitura deste artigo da Wikipedia.

Resumidamente um proxy é uma máquina que fica entre você e a Internet. Acessar a Web por um proxy fará com que os servidores que você acessa enxerguem não o seu endereço mas o endereço desta máquina intermediária.

Você pode precisar utilizar um proxy caso a rede da sua empresa não permita acessar um Facebook, Twitter ou outro site qualquer, caso seu IP tenha sido bloqueado por algum administrador de site, queira testar o acesso de diferentes usuários em seu site e outros usos menos ortodoxos.

Por suas características peculiares proxies devem ser usados com cuidado, principalmente se você pensa em acessar serviços utilizando alguma senha.

Hoje vamos criar uma classe que utilizará um proxy para acessar qualquer URL com a ajuda do CURL do PHP.

Vamos considerar que o proxy que você utiliza é aberto, ou seja, não necessita de senha

<?php

class Proxy
{

private $proxy_ip;
private $proxy_port;

public function __construct($param = Array())
{
$this->proxy_ip = $param['proxy_ip']; //proxy IP
$this->proxy_port = $param['proxy_port']; //porta de seu proxy
}

public function access($url)
{

if  ($this->proxy_port != '' && ($this->proxy_ip != '' && $url != ''))  { //Ativa o CURL se houver um endereço de proxy e porta

$ch = curl_init();  // Inicializa o CURL
curl_setopt($ch, CURLOPT_URL, $url); // URL que será acessada via o PROXY
curl_setopt($ch, CURLOPT_HEADER, 1); // sem headers no output
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // output para a variable
curl_setopt($ch, CURLOPT_PROXYPORT, $this->proxy_port); // Número da porta do proxy
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP'); // Tipo de protocolo
curl_setopt($ch, CURLOPT_PROXY, $this->proxy_ip); // Endereço do proxy
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Se a url que você acessa tem um redirecionamento via servidor o CURL segue para a nova url redirecionada

$data = curl_exec($ch);  // Executa o CURL
curl_close($ch);

return $data;

}  else  {

return 0;

}

}
}

para utilizar a classe basta instancia-la:

$connect = new Proxy(Array(
'proxy_ip' => 'xxx.xxx.xxx.xx',
'proxy_port' => yyyy
));

echo $connect->access("http://www.siteparaconectar.com.br");

Onde xxx.xxx.xxx.xx é o endereço do proxy e yyyy o número da porta (provavelmente a 8080)

Você quer um endereço de proxy? Procure por 'PROXY LIST' no Google.

Por hoje é isso!

Comentários

  1. parabens me ajudou muito :D So tem um problema.. quando eu jogo no servidor que eo hosting.com.br o proxy nao funciona ja ativei a curl pelo php.ini mais nao ta funcionando nao sei porque :/
    poderiam me ajudar nisso . valew galera

    ResponderExcluir
    Respostas
    1. Provavelmente seu HOST bloqueou esta funcionalidade.
      Entre em contato com o Administrador

      Excluir
  2. Massa. Não sei se funciona ainda.. Vou testar e clicar no anúncio pra ajidar a página.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

MySQL - Cálculo de período de tempo entre duas datas com TIMESTAMPDIFF

PHP - Gerando arquivo em UTF-8 com fwrite() e utf8_encode()