2011-02-03 11 views
7

Czy ktoś z was próbował używać rotacyjnych serwerów proxy? Jak łatwo to wdrożyć? Czy to działa dobrze? Twoje wrażenia, proszęPHP i proxy rotacyjne

PS: widzę pytania takie jak "how to make php script use a list of proxies" zbierać wiele minusów. Czy możesz to wyjaśnić przed wprowadzeniem -1?

+1

Pamiętam, że próbowałem zrobić coś takiego dla klienta.Największym problemem było zdobycie stałej listy serwerów proxy, z których można korzystać. Pierwotnie skreśliliśmy listę z witryny, ale problem polegał na tym, że mogli zmienić sytuację, a skrypt przestał działać. – xil3

+2

Proszę odwiedzić [ten link] (http://scraperblog.blogspot.com/2013/07/php-scrape-website-with-rotating-proxies.html) w celu znalezienia właściwego rozwiązania. – pguardiario

Odpowiedz

15

------ AKTUALIZACJA 04 marca 2017 -------


Byłem tam i okazało się, że najlepszym rozwiązaniem było:

Jeśli nie masz serwera dedykowanego lub przynajmniej vps i trochę cierpliwości nie przejmuj się czytaniem reszty posta ...

1 - Zainstaluj Squid 3.2 ze źródła (zobacz uwagi poniżej)
2 - Dodaj listę 20 lub więcej adresów IP do squid.conf (kosztuje około 25 $ miesięcznie)
3 - Użyj nowej funkcji ACLrandom, aby obrócić wychodzący adres IP.

W ten sposób nie trzeba obracać listę adresów IP na skrypcie php, a nie będziesz się łączył do tego samego adresu IP (np 192.168.1.1:3129), ale widoczne ip wychodzący (tcp_outgoing_address) będzie się obracał przy każdym żądaniu na podstawie losowych ustawień.

Będziesz musiał skompilować squid 3.2 z '-enable-http-violations', aby uczynić go elitarnym anonimowym proxy.

krok po kroku Instalacja:

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 próbki (znajdujący się w tym przypadku /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 

Próbka PHP CURL żądanie z użyciem 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 

Przydatne linki:
Squid 3,2 Źródło: 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
Instalacja Squid 3.2 na CentOS 5.3 - http://www.guldmyr.com/blog/installing-squid-3-2-on-centos-5-3/
Dodaj hasło Squid: How to set up a squid Proxy with basic username and password authentication?

Odkryłem, że jest to najbardziej niezawodny i bezpieczny sposób na obracanie serwerów proxy, ponieważ nie polegasz na zewnętrznych dostawcach proxy, a twoje informacje (hasła, dane itd.) Będą bezpieczniejsze. Może się to początkowo wydawać trochę trudne, ale to się opłaca co sekundę, GL :)

+2

Instalacja i konfiguracja squida wydaje mi się być przesadą dla prostego rotacyjnego skryptu proxy. – pguardiario

+2

Dzięki za komentarz @ pguardiario, czy masz inne rozwiązanie? Jeśli tak, chciałbym to usłyszeć (szczerze). –