/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Omgåelse af spærring af sider
Fra : Rigor Mortis


Dato : 22-04-05 11:39

På mit arbejde er der sat spærring på en hel masse sider.

Mit spørgsmål er om man ved hjælp af PHP kan hente hjemmesider og
afvikle dem på en server man har lov til at komme på..?

Det lyder lidt kringlet..

Men jeg mener, hvis man nu havde en side man kunne gå ind på og
skrive en adresse (f.ex: http://www.emessenger.net) og så
webserveren hentede siden og viste den i en frame.

Findes der muligheder for det?



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Henrik Stidsen (22-04-2005)
Kommentar
Fra : Henrik Stidsen


Dato : 22-04-05 12:40

Rigor Mortis <nej@nej.dk> wrote in
news:4268d442$0$79453$14726298@news.sunsite.dk

> Men jeg mener, hvis man nu havde en side man kunne gå ind på og
> skrive en adresse (f.ex: http://www.emessenger.net) og så
> webserveren hentede siden og viste den i en frame.

> Findes der muligheder for det?

Du vil have en proxy - PHP er ikke specielt godt til det formål men
det kan godt laves.

MEN - hvis du smider siden i en frame er det stadig din maskine der
henter siden og firmaets blokering vil stadig virke.
Du skal iøvrigt ikke regne med at diverse webmessenger og lign. vil
virke igennem sådan et system.

--
Henrik Stidsen - http://hs235.dk/ - http://såkadulæredet.dk/
"Is everyone else in the world a moron, or is it just me?"
(Dilbert Newsletter)

Bent Stigsen (22-04-2005)
Kommentar
Fra : Bent Stigsen


Dato : 22-04-05 16:15

Rigor Mortis wrote:
> På mit arbejde er der sat spærring på en hel masse sider.
>
> Mit spørgsmål er om man ved hjælp af PHP kan hente hjemmesider og
> afvikle dem på en server man har lov til at komme på..?
>
> Det lyder lidt kringlet..
>
> Men jeg mener, hvis man nu havde en side man kunne gå ind på og
> skrive en adresse (f.ex: http://www.emessenger.net) og så
> webserveren hentede siden og viste den i en frame.
>
> Findes der muligheder for det?

Hvis det bare er at se sider, kan du formentlig bruge en af det mange
anonymizers som findes på nettet.

http://www.freeproxy.ru/en/free_proxy/cgi-proxy.htm

Og som Henrik også er inde på, det garanterer ikke funktionaliteten af
diverse indhold, såsom javascript, flash, java-applets, streams, ...

En anden ting du nok skal overveje, og det er ikke for at moralisere,
men fordi jeg tror det vil være spild af tid, som du i sidste ende ikke
vil få noget ud af. Hvis netværksafdelingen/-overvågningen på dit
arbejde, aktivt har sat en spærring på nogle sider, og du laver en masse
krumspring for at omgå det, bliver de nok ikke alt for begejstrede. Du
kan regne med at de finder ud af det, og bare lukker for proxyerne eller
andre metoder, efterhånden som du finder dem. Altså spild af tid.
Det kan være, at de sider du vil ind på, er spærret uden nogen speciel
grund. Og så er det måske bare at spørge.

/Bent

Kasper Johansen (09-05-2005)
Kommentar
Fra : Kasper Johansen


Dato : 09-05-05 14:37

"Rigor Mortis" <nej@nej.dk> skrev i en meddelelse
news:4268d442$0$79453$14726298@news.sunsite.dk...
> På mit arbejde er der sat spærring på en hel masse sider.
> Men jeg mener, hvis man nu havde en side man kunne gå ind på og
> skrive en adresse (f.ex: http://www.emessenger.net) og så
> webserveren hentede siden og viste den i en frame.
>
> Findes der muligheder for det?


Hej Rigor.

Da jeg studerede på HTX i Nykøbing F. havde vi selv samme problem.

Det lyder som om at du går igennem en proxy, eller et andet program der
holder øje med hvad du besøger. Du skal bare omgå den.

Hvis du går igennem en proxy skal du være opmærksom på om du har adgang til
at lave "connect"-requests igennem den, og ikke kun "get" og
"post"-requests.

Ellers er det faktisk pærelet at opstille dit eget proxy-program til at gå
igennem flere proxyer. Til dette vil mange nok mene at det er lettest at
lave et seperat program, men dette er skam også muligt med PHP. Du skal lave
et enkelstående program, og skal derfor sørge for at starte dit script uden
for en webserver.

Når man laver et connect-request gennem en proxy kan det foregå som i denne
funktion jeg har skrevet:

function proxy_conn($proxyhost, $proxyport, $host, $port, $username = false,
$password = false){
$fp = fsockopen($proxyhost, $proxyport, $error1, $error2, 5);

if ($fp){
fputs($fp, "CONNECT " . $host . ":" . $port . " HTTP/1.0\r\n");

if ($username && $password){
$authstring = base64_encode($username . ":" . $password);
fputs($fp, "Proxy-Authorization: Basic " . $authstring . "\r\n");
}

fputs($fp, "\r\n");
while(trim(fgets($fp, 128))){}

return $fp;
}else{
return false;
}
}


Funktionere returnere således en variabel svarende til det som "fsockopen"
returnere, denne connection er bare gået igennem en proxy. Læg også mærke
til at du har mulighed for at skrive brugernavn og adgangskode hvis din
proxy kræver det.

Dertil skal du sørge for at lytte efter indkommende socket-connections
f.eks. fra Internet Explorer når du prøver at tilgå en side (måske en
spærret side ;) ). Du skal derfor sørge for at have inkluderet
"socket"-udvidelse til PHP (det kan du let gøre i php.ini).

Du kan således lytte efter connections som i mit eksempel fra mit eget
omtalte program:


$fp = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($fp, "localhost", 808);

socket_setopt($fp, SOL_SOCKET, SO_REUSEADDR, 1);

if (!socket_set_nonblock($fp)) {
echo socket_strerror(socket_last_error());
}

socket_listen($fp);


Du skal herefter lave en løkke der kan lytte efter uendelige
socket-connections. Det kan du gøre således:

while(true){
$tempcon = @socket_accept($fp);

if ($tempcon){
echo "Jamen dog, vi bliver brugt???\n";
}
}


Du kan herefter hente data som klienten sender således:

socket_recv($data[$c][fp_rm], $data[$c][headers], 65535, 0);


Du kan sende data med "socket_write". Læs mere om det hele ved at slå
funktionerne op på www.php.net.

Du lytter altså således efter connections på din egen computer (du laver
altså et proxy program). Når en bruger forsøger at få fat på en side, kører
du den bare igennem en dit arbejdes proxy (hvis de har en) og derefter en
tilfældig open-proxy på nettet (find evt. på Google). Derefter sætter du
denne open-proxy til at hente den spærrede side, og sende tilbage til
klienten.

Således skal dit program altså gøre for hver connection (det vil sige for
hvert billede der findes på siden, for stylesheetet og andre filer den skal
bruge). Det vil måske gå en anelse langsommere end normalt da den skal
igennem et par proxys og sådan, men princippet virkede fint for os på skolen
;)

Håber du kunne bruge det til noget.

--
Mvh Kasper Johansen aka knj
www.kasperj.lir.dk



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste