2011-02-03 40 views
7

¿Alguien de ustedes ha intentado usar proxies rotativos? ¿Qué tan fácil es esto de implementar? Funciona bien? Su experiencia por favorPHP y proxies rotativos

PD: veo preguntas como "how to make php script use a list of proxies" reunir un montón de desventajas. ¿Puedes explicar esto antes de poner -1?

+1

Recuerdo haber intentado hacer algo como esto para un cliente.El mayor problema fue obtener una lista constante de proxies para usar. Originalmente estábamos sacando la lista de un sitio, pero el problema era que podían cambiar las cosas y el script simplemente dejaba de funcionar. – xil3

+2

Visite [este enlace] (http://scraperblog.blogspot.com/2013/07/php-scrape-website-with-rotating-proxies.html) para obtener una solución adecuada. – pguardiario

Respuesta

15

------ ACTUALIZADA 04 de marzo de 2017 -------


que he estado allí y se encontró que la mejor solución era:

Si no tiene un servidor dedicado o al menos un vps y un poco de paciencia no se molestan en leer el resto de la publicación ...

1 - Instalar Squid 3.2 desde la fuente (ver notas a continuación)
2 - Agregue una lista de aproximadamente 20 ip a squid.conf (cuesta aproximadamente 25 $ mes)
3 - Use la nueva característica ACLrandom para rotar la IP saliente.

De esta manera no es necesario rotar la lista de los IP en su script PHP, en cambio, se le conecta a la misma ip (por ejemplo: 192.168.1.1:3129) pero el visibles IP saliente (tcp_outgoing_address) girará en cada solicitud en función de la configuración aleatoria.

Deberá compilar squid 3.2 con '-enable-http-violations' para convertirlo en un proxy anónimo de élite.

Instalación paso a paso:

yum -y groupinstall 'Development Tools' 
yum -y install openssl-devel 
mkdir /meus 
cd /meus 
wget http://www.squid-cache.org/Versions/v3/3.2/squid-3.2.13.tar.gz 
tar -xvf squid-3.2.13.tar.gz 
cd squid-3.2.13 
./configure -prefix=/squid32 '--enable-removal-policies=heap,lru' '--enable-ssl' '--with-openssl' '--enable-linux-netfilter' '--with-pthreads' '--enable-ntlm-auth-helpers=SMB,fakeauth' '--enable-external-acl-helpers=ip_user,ldap_group,unix_group,wbinfo_group' '--enable-auth-basic' '--enable-auth-digest' '--enable-auth-negotiate' '--enable-auth-ntlm' '--with-winbind-auth-challenge' '--enable-useragent-log' '--enable-referer-log' '--disable-dependency-tracking' '--enable-cachemgr-hostname=localhost' '--enable-underscores' '--enable-build-info' '--enable-cache-digests' '--enable-ident-lookups' '--enable-follow-x-forwarded-for' '--enable-wccpv2' '--enable-fd-config' '--with-maxfd=16384' '-enable-http-violations' 
make 
make install 

squid.conf de muestra (que se encuentra en este caso /squid32/etc/squid.conf):

#this will be the ip and port where squid will run 
http_port 5.5.5.5:33333 # change this ip and port ... 

#Extra parameters on squid.conf to make an elite proxy 

request_header_access Allow allow all 
request_header_access Authorization allow all 
request_header_access WWW-Authenticate allow all 
request_header_access Proxy-Authorization allow all 
request_header_access Proxy-Authenticate allow all 
request_header_access Cache-Control allow all 
request_header_access Content-Encoding allow all 
request_header_access Content-Length allow all 
request_header_access Content-Type allow all 
request_header_access Date allow all 
request_header_access Expires allow all 
request_header_access Host allow all 
request_header_access If-Modified-Since allow all 
request_header_access Last-Modified allow all 
request_header_access Location allow all 
request_header_access Pragma allow all 
request_header_access Accept allow all 
request_header_access Accept-Charset allow all 
request_header_access Accept-Encoding allow all 
request_header_access Accept-Language allow all 
request_header_access Content-Language allow all 
request_header_access Mime-Version allow all 
request_header_access Retry-After allow all 
request_header_access Title allow all 
request_header_access Connection allow all 
request_header_access Proxy-Connection allow all 
request_header_access User-Agent allow all 
request_header_access Cookie allow all 
request_header_access All deny all 

via off 
forwarded_for off 
follow_x_forwarded_for deny all 

acl vinte1 random 1/5 
acl vinte2 random 1/5 
acl vinte3 random 1/5 
acl vinte4 random 1/5 
acl vinte5 random 1/5 

tcp_outgoing_address 1.1.1.1 vinte1 # fake ip's , replace with yours 
tcp_outgoing_address 1.1.1.2 vinte2 
tcp_outgoing_address 1.1.1.3 vinte3 
tcp_outgoing_address 1.1.1.4 vinte4 
tcp_outgoing_address 1.1.1.5 vinte5 

tcp_outgoing_address 1.1.1.6 # this will be the default tcp outgoing address 

Muestra PHP CURL solicitud usando un proxy squid:

$proxy = "1.1.1.1:33333"; 
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; 
$url = "https://api.ipify.org/"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,15); 
curl_setopt($ch, CURLOPT_HTTP_VERSION,'CURL_HTTP_VERSION_1_1'); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
curl_setopt($ch, CURLOPT_PROXY, $proxy); 
curl_setopt($ch, CURLOPT_PROXYUSERPWD,'USER:PASS'); 
curl_setopt($ch, CURLOPT_USERAGENT,$useragent); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); 
$result=curl_exec ($ch); 
curl_close ($ch); 
echo $result 

Enlaces Utiles:
Calamar 3.2 Fuente: http://www.squid-cache.org/Versions/v3/3.2/squid-3.2.13.tar.gz
Rotating_three_IPs: http://wiki.squid-cache.org/ConfigExamples/Strange/RotatingIPs#Example:_Rotating_three_IPs_based_on_time_of_day
AclRandom: http://wiki.squid-cache.org/Features/AclRandom
Instalación de calamar 3.2 en CentOS 5.3 - http://www.guldmyr.com/blog/installing-squid-3-2-on-centos-5-3/
Añadir contraseña a Calamar: How to set up a squid Proxy with basic username and password authentication?

He encontrado que esta es la forma más confiable y segura de rotar proxies porque no confía en proveedores de proxy externos y su información (contraseñas, datos, etc.) será más segura. Puede sonar un poco difícil de configurar al principio, pero valdrá la pena cada segundo que haya gastado, GL :)

+2

Instalar y configurar Squid, para mí, parece ser excesivo para un simple script proxy rotativo. – pguardiario

+2

Gracias por tu comentario @pguardiario, ¿tienes otra solución? Si es así, me gustaría escucharlo (honestamente). –

Cuestiones relacionadas