Forum » Programiranje » [C][linux] socket HTTP
[C][linux] socket HTTP
boss-tech ::
delam neko vajo kjer moram s spletne strani dobit vse podatke, izpisat pa vse razen glave.
v program dobit hosta in port. naredil sem nekako takole:
int socket1=socket(PF_INET, SOCK_STREAM, 0);
send(socket1,"GET / HTTP/1.1 \n\r\n\r",23,0);
n=read(socket1,buffer,100);
while(n>0) {
n=read(socket1,buffer,100);
write(1,buffer,n);}
izpiše mi:
html bodyRequested page cannot be found. Please contact firewall administrator./body /html
buffer: ator./body /html
Ima kdo kako idejo?
v program dobit hosta in port. naredil sem nekako takole:
int socket1=socket(PF_INET, SOCK_STREAM, 0);
send(socket1,"GET / HTTP/1.1 \n\r\n\r",23,0);
n=read(socket1,buffer,100);
while(n>0) {
n=read(socket1,buffer,100);
write(1,buffer,n);}
izpiše mi:
html bodyRequested page cannot be found. Please contact firewall administrator./body /html
buffer: ator./body /html
Ima kdo kako idejo?
- spremenilo: CCfly ()
Gundolf ::
Sej lahko pogooglaš za kakšen tutorial na temo (pravzaprav dve temi: socketi v linuxu in pa http transactions), se da (preverjeno) najti. Sicer pa prva stvar, ki me zmoti tule je:
"GET / HTTP/1.1 \n\r\n\r"
Rahlo dvomim, da morajo biti tule \n\r zaporedja, pa še ime strani, ki jo zahtevaš mi manjka tule (res da govorim totalno iz glave, tako da lahko sem se kje uštel).
"GET / HTTP/1.1 \n\r\n\r"
Rahlo dvomim, da morajo biti tule \n\r zaporedja, pa še ime strani, ki jo zahtevaš mi manjka tule (res da govorim totalno iz glave, tako da lahko sem se kje uštel).
Quikee ::
Definitivno ne "\n\r\n\r".. verjetno "\r\n\r\n".
Kaj pa pravi: "GET /index.html HTTP/1.1 \r\n\r\n" oz. direktno file, ki ziher obstaja.
Kaj pa pravi: "GET /index.html HTTP/1.1 \r\n\r\n" oz. direktno file, ki ziher obstaja.
Quikee ::
Probaj z headerjem: "GET / HTTP/1.0\r\n\r\n"
Naslednja koda spisana na hitro v pythonu mi dela, medtem ko z headerjem "GET / HTTP/1.1\r\n\r\n" mi ne dela (bad request)
Naslednja koda spisana na hitro v pythonu mi dela, medtem ko z headerjem "GET / HTTP/1.1\r\n\r\n" mi ne dela (bad request)
#!/usr/bin/python import socket import sys host = sys.argv[1] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, 80)) s.send('GET / HTTP/1.0\r\n\r\n') data = s.recv(1024) s.close() print data
boss-tech ::
./httpxxx www.vreme-si.com 80
Connection: close
Content-Type: text/html; charset=iso-8859-1
DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"
htmlhead
title>400 Bad Request/title>
/head>body>
h1>Bad Request/h1>
p>Your browser sent a request that this server could not understand.br />
/p>
hr>
address>Apache Server at www.popcom.si Port 80/address>
/body>/html>
izpis(buffer):
buffer: rver at www.popcom.si Port 80address>
/body>/html>
nderstand.
/p>
hr>
host: www.vreme-si.com
send(socket1,"GET /vreme-danes.htm HTTP/1.1 \r\n\r\n",38,0);
Connection: close
Content-Type: text/html; charset=iso-8859-1
DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"
htmlhead
title>400 Bad Request/title>
/head>body>
h1>Bad Request/h1>
p>Your browser sent a request that this server could not understand.br />
/p>
hr>
address>Apache Server at www.popcom.si Port 80/address>
/body>/html>
izpis(buffer):
buffer: rver at www.popcom.si Port 80address>
/body>/html>
nderstand.
/p>
hr>
host: www.vreme-si.com
send(socket1,"GET /vreme-danes.htm HTTP/1.1 \r\n\r\n",38,0);
b ::
HTTP/1.1 mora imeti Host: header. Ker ga pri tebi nima, ti javi error 400.
Torej:
GET / HTTP/1.1
Host: www.example.com[2x CRLF]
ali pa
GET / HTTP/1.0[2x CRLF]
kjer bos verjetno (odvisno od web serverja) dobil nazaj index default virtualhosta.
Namesto CRLF je cisto v redu tudi samo LF (\n).
Torej:
GET / HTTP/1.1
Host: www.example.com[2x CRLF]
ali pa
GET / HTTP/1.0[2x CRLF]
kjer bos verjetno (odvisno od web serverja) dobil nazaj index default virtualhosta.
Namesto CRLF je cisto v redu tudi samo LF (\n).
boss-tech ::
ja kam pa dam zdaj ta host v: send(socket1,"GET /vreme-danes.htm HTTP/1.1 \r\n\r\n",38,0);
Zgodovina sprememb…
- spremenil: boss-tech ()
b ::
O madona.... kaj pa če bi ti sam mal možgančke nakravžljal? Ne vem v čem je fora, da se ti vse prinese na pladnju, če delaš neko vajo... Če že nisi bil sposoben poiskat HTTP specifikacije, jo vsaj uporabit poskusi sam.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Fix skripte: nginx log + group by user-agent + count + sort descOddelek: Programiranje | 728 (651) | Invictus |
» | Nenavaden črv napada Linksysove usmerjevalnikeOddelek: Novice / Varnost | 7097 (3778) | Daniel |
» | Postavitev strežnika in lokalnega omrežjaOddelek: Omrežja in internet | 1772 (1489) | NoName |
» | Netcat + shranjevanje slikeOddelek: Programska oprema | 1855 (1635) | someone1 |
» | [Java]Brane spletne strani preko httpsOddelek: Programiranje | 2148 (1967) | CWIZO |