Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

web adresini kontrrol etmek

Başlatan speak48, 02 Nisan 2013, 13:55:50

speak48

gireceğim bir web adresinin var olup olmadığını otamatik kontrol etmek istiyorum.
ama bu kadar basit bir istek bile  nedense bulunmaz oluyor.
c ile bu nasıl yapabilirim.

SERRO EFE


speak48

pingi sadece kök adresine yani ip numarasına atıyo
ben full adresin var olup olmadığını kontrol etmek istiyorum

Gökhan BEKEN

Her sayfada işlemeyebilir ama aklıma şöyle bir yöntem geldi.
Girdiğiniz sayfada birşey yoksa çoğu zaman "böyle bir sayfa yok" tarzı bir yazı gelir.
c++ ta açmak istediğiniz sayfanın html içeriğini sorgulayarak "böyle bir sayfa yok" içeriği var mı yok mu diye kontrol edip anlayabilirsiniz.
Ama bazı siteler yalnış bir sayfaya girmek istediğinizde anasayfaya yönlendirebiliyor ya da kendileri bunu anlayarak "böyle bir döküman yok" tarzında mesajlar verebiliyorlar.
Özel mesaj okumuyorum, lütfen göndermeyin.

speak48

aklınıza geleni değilde bildiğinizi hatta yaptığınız şeyi söylerseniz daha yardımcı olursunuz.

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

speak48

bende bu gibi şeyler deniyorum ama bi sonuca ulaşamadım.
basic yerine c olsaydı daha iyi olurdu.

everygelem

#7
Sunucuya socketle 80 nolu porta bağlanıp, sayfa talebinde bulunmanız yeterli.
GET /index.html HTTP/1.0\r\n
Host: www . xxxxxxx . c o m r\n
\r\n


#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>

#define PORT        80
             /* REPLACE with your server machine name*/
#define HOST        "localhost"
#define DIRSIZE     8192

main(argc, argv)
int argc; char **argv;
{
        char hostname[100];
	char    dir[DIRSIZE];
	int	sd;
	struct sockaddr_in sin;
	struct sockaddr_in pin;
	struct hostent *hp;
	char   gonder[100] = "GET /index.html HTTP/1.0\r\nHost: www. xxx . comr\n\r\n";
        strcpy(hostname,HOST);
        if (argc>1)
            { strcpy(hostname,argv[1]); }

	/* go find out about the desired host machine */
	if ((hp = gethostbyname(hostname)) == 0) {
		perror("gethostbyname");
		exit(1);
	}

	/* fill in the socket structure with host information */
	memset(&pin, 0, sizeof(pin));
	pin.sin_family = AF_INET;
	pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
	pin.sin_port = htons(PORT);

	/* grab an Internet domain socket */
	if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
		perror("socket");
		exit(1);
	}

	/* connect to PORT on HOST */
	if (connect(sd,(struct sockaddr *)  &pin, sizeof(pin)) == -1) {
		perror("connect");
		exit(1);
	}

	/* send a message to the server PORT on machine HOST */
	if (send(sd, gonder, strlen(gonder), 0) == -1) {
		perror("send");
		exit(1);
	}

        /* wait for a message to come back from the server */
        if (recv(sd, dir, DIRSIZE, 0) == -1) {
                perror("recv");
                exit(1);
        }

        /* spew-out the results and bail out of here! */
        printf("%s\n", dir);

	close(sd);
}


gcc test.c -o test
./test google.com

HTTP/1.0 302 Found
Location: http://www.google.com/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Tue, 02 Apr 2013 12:55:55 GMT
Server: sffe
Content-Length: 219
X-XSS-Protection: 1; mode=block

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

benzeri bir çıktı oluşturur. istersen sunucudan gelen veri boyutunu istersen içerikteki bir kelimeyi sorgularak sitenin varlıgından emin olabilirsin.

Gökhan BEKEN

#8
Alıntı yapılan: speak48 - 02 Nisan 2013, 14:42:26
aklınıza geleni değilde bildiğinizi hatta yaptığınız şeyi söylerseniz daha yardımcı olursunuz.
Bilmediğim şey aklıma nasıl gelsin? Bastır parasını yapıyım o kadar hazır istiyorsan.
Ayrıca konuyu visual c++ kısmına açmışsın. C ile nasıl yapılır diye soruyosun.
Özel mesaj okumuyorum, lütfen göndermeyin.

t2

Alıntı yapılan: speak48 - 02 Nisan 2013, 13:55:50
gireceğim bir web adresinin var olup olmadığını otamatik kontrol etmek istiyorum.
ama bu kadar basit bir istek bile  nedense bulunmaz oluyor.
c ile bu nasıl yapabilirim.

embedded webbrowser  var onu kullanırsınız. Bu şu demek. internet explorer sizin uygulamanız içinde açılıyor sayfa içeriğini ve diğer birçok özelliğini kullanabiliyorsunuz. düğmeleri tıklayıp javascriptlerini çalıştıraibliyorsunuz.

diyelim sayfayı açtık
http://sfasfasdasd.com

3 saniye bekledik tık yok. bir de baktık sayfa içindeki metin
Sunucu bulunamadı       
Alıntı Yapwww.sfasfasdasd.com konumundaki sunucu bulunamıyor.
haline dönüşmüş. Haaa nedemekmiş sayfa yokmuş.

3 saniye bekledik hala bekliyoruz hiç bir şey gelmemiş. 30 saniye oldu hala içi boş. bu nedemek? sunucuda sitede bir sıkıntı var demek hala cevap veremiyor.

3 saniye bekledik sayfa içinde başka birşey çıktı 404 hatası yada 503 bu ne demek?..
bunun gibi size lazım olan hataları göstertebilir kaydını tutabilirsiniz. lazım olmayanın saklamazsınız.

peki sayfa açıldıysa nasıl anlayacağzı daha önce o  sayfa ziyaret edilmemiş ki?  şuşu içerik veya hatalar yoksa  sayfa açılmış demektir. orda dur. sayfa içinde beğendiğin link veya içerik varsa onun varlığına da bakılabilir.

embedded webbrowser  C de çalışır mı? illa ki çalışır  komponenti yoksa bile activex nesnesini kullanabilirsiniz.

speak48

@everygelem
socket işe yarayabilir gözüküyor ama bu socket kütüphanesi nerdedir onu arıyoruz şimdide.

@meftun
aklınıza gelen şeyde bir bilgi yok.
deniyeceğim sayfalar olmayınca başka bir yere yonlendirmiyo direkt browser notfound mesajı gönderiyor.
yani olay html in içeriğini sorgulama değil bu html erişilebilinirmi odur.
aradığım şeyde zaten nasıl html erişeceğin ve alacağın hata kodları
bu forumda c bölümü yok ayrıca windowsun c++ derleyicisiye c derleyicisi ortak.

@t2
3 saniyemi baya yüksek 120000 adresi kontrol etmem gerkiyor elle yapmaktan uzun sürmesin
ayrıca aradığım mulaka 3 5 tane fonksiyonun birlikte kullanımıdır koskoca browseri kuullanmayalım


Gökhan BEKEN

Alıntı yapılan: speak48 - 02 Nisan 2013, 18:34:30
deniyeceğim sayfalar olmayınca başka bir yere yonlendirmiyo direkt browser notfound mesajı gönderiyor.
bunu gönderiyorsa olay basit değil mi?
Özel mesaj okumuyorum, lütfen göndermeyin.

speak48

#12
o basit şeyi arıyoruz hala.
bir ilginçlik var belki sorun çıkarır.
o adresin ismi yerine ip adresini girersek browser gene not found diyor.

Gökhan BEKEN

browser'ın verdiği mesajı @t2 nin dediği gibi programınıza browser ekleyerek rahat halledersiniz. Siz sayfa yoksa html kodu yok diye düşünmüşsünüz. Oysa browser kendisi o mesajı html şeklinde verir. Sizde bu mesajı görünce "hımm demekki böyle bir site yoktur" mesajını şak diye yapıştırırsınız.
Ama bunu visual dillerde yaparsınız c dilinde browser ekleyip mesaj alma olayını bilmiyorum.
Özel mesaj okumuyorum, lütfen göndermeyin.

peko


Alıntı Yap120000 adresi kontrol etmem gerkiyor

Rakam doğru mu?
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "