الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التأكد من صحة رابطة موقع ما

بدأه زكيري عبد العالي في 12 مايو 2010 · 6 رد · 806 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخوتي اريد كما هو واضح في العنوان عندي قاعدة بيانات طويلة عريضة من email لافراد و مواقعهم و اريد ان شاء ربوت اي برنامج يشتغل لوحدة في كل ليلة من كل اسبوع ليقوم بتنقيت القاعدة من الامايل و المواقع الخاطأة يتم تحديثها ببد طلك من طرف فريق تحديث المعلومات .

عن الميل كتبت موضوع سابق اما عن المواقع الفكرة:

1- عمليت ping على السرفر الذي به الموقع مثلا

function TForm1.Ping(const AHost : string; const ATimes : integer;  out AvgMS:Double) : Boolean;
 var
  R : array of Cardinal;
  i : integer;
begin
  Result := True;
  AvgMS := 0;
  if ATimes>0 then
    with TIdIcmpClient.Create(Self) do
    try
        Host := AHost;
        ReceiveTimeout:=999; //TimeOut du ping
        SetLength(R,ATimes);
        {Pinguer le client}
        for i:=0 to Pred(ATimes) do
        begin
            try
              Ping();
              Application.ProcessMessages; //ne bloque pas l'application
              R := ReplyStatus.MsRoundTripTime;
            except
              Result := False;Exit;
            end;
          if ReplyStatus.ReplyStatusType<>rsEcho Then result := False; //pas d'écho, on renvoi false.
        end;
        {Faire une moyenne}
        for i:=Low(R) to High(R) do
        begin
          Application.ProcessMessages;
          AvgMS := AvgMS + R;
        end;
        AvgMS := AvgMS / i;
    finally
        Free;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  RoundTripTime : Double;
begin
  if Ping(edit1.text, 4, RoundTripTime) then
    MessageDlg(Format('Ping moyen : %s',[FormatFloat('0.00',RoundTripTime)]), mtInformation, [mbOK], 0)
  else
    MessageDlg('Erreur. L''hôte est sans doute injoignable.', mtInformation, [mbOK], 0);
end;

لا تعطي نتيجة اجابية كل الحلات

2- عمل تصفح للصفحة عن طريق WebBrowser1 ثم الدخول الاى سورس html لتحليله مثلا

procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.Navigate(Edit1.Text,EmptyParam,EmptyParam);
end;
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
    if pos('<!-- Error title -->',WebBrowser1.OleObject.Document.body.innerHTML) >0 then
    MessageDlg('Erreur. L''hôte est sans doute injoignable.', mtInformation, [mbOK], 0);
end;

3-وهي الطريقة الثالثة

Function IsGoodUrl(iUrl: string): integer;
var
  i: integer;
  HTTP: TIDHTTP;
  Quelltext: string;
begin
  Result := 0;
  HTTP := TIDHTTP.Create(NIL);
  TRY
    HTTP.HandleRedirects := True;
    Repeat
      Try
        Quelltext := HTTP.Get(iUrl);
      Except  ON E: Exception DO
          begin
             Result := HTTP.ResponseCode;
             Exit;
          end;
      End;
      i := i + 1;
    Until (Quelltext <> '') or (i = 5);
  Finally
    HTTP.Free;
  End;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  vmsg: string;
  vCodMsg: integer;
begin
  vCodMsg := IsGoodUrl(Edit1.text);
  if vCodMsg <> 0 then
  begin
    case vCodMsg of
       -1:  vmsg := 'Bad Request';
      400:  vmsg := 'Bad Request';
      403:  vmsg := 'Forbidden';
      404:  vmsg := 'Not Found';
    end;
    MessageDlg('Erreur. L''hôte est sans doute injoignable. ' + #10#13 +
        'Message : ' + IntToStr(vCodMsg) + ' / ' + vmsg, mtInformation, [mbOK],
      0);
  end;

end;

هل هناك ما هو افضل شكرا مسبقا

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 12 مايو 2010 في 14:05

#2

السلام عليكم

هناك طريقة قمت باستعمالها ووفت بالغرض

يمكنك استعمال Whois Lookup Client

للتعرف ادا كان الدومين محجوز ام لا ومعرفة ال DNS

% Joint Whois - whois.lacnic.net
%  This server accepts single ASN, IPv4 or IPv6 queries

% ARIN resource: whois.arin.net


OrgName:    Google Inc. 
OrgID:      GOGL
Address:    1600 Amphitheatre Parkway
City:       Mountain View
StateProv:  CA
PostalCode: 94043
Country:    US

NetRange:   72.14.192.0 - 72.14.255.255 
CIDR:       72.14.192.0/18 
NetName:    GOOGLE
NetHandle:  NET-72-14-192-0-1
Parent:     NET-72-0-0-0-0
NetType:    Direct Allocation
NameServer: NS1.GOOGLE.COM
NameServer: NS2.GOOGLE.COM
NameServer: NS3.GOOGLE.COM
NameServer: NS4.GOOGLE.COM
Comment:    
RegDate:    2004-11-10
Updated:    2007-04-10

RTechHandle: ZG39-ARIN
RTechName:   Google Inc. 
RTechPhone:  +1-650-318-0200
RTechEmail:  arin-contact@google.com 

OrgTechHandle: ZG39-ARIN
OrgTechName:   Google Inc. 
OrgTechPhone:  +1-650-318-0200
OrgTechEmail:  arin-contact@google.com

# ARIN WHOIS database, last updated 2010-05-12 20:00
# Enter ? for additional hints on searching ARIN's WHOIS database.
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at https://www.arin.net/whois_tou.html

إعجاب الإنسان بنفسه دليل على صغر عقله

-----------------------------------------------------------------

رأس الحكمة مخافة الله

#3

شكرا maosalah الفكرة التى وضعتها في الخير جيدة و الحمد لله

شكرا

#4

اظن الاكثر فعاليه هو البحث فى ال MX Records الخاصه بالدومين

#5

السلام عليكم ...

أخ زكيري, ليس هناك داع لطلب الصفحة كاملة عن طريق GET, يمكنك طلب الـ HEAD فقط.

بالنسبة للـ email فلم أسمع بطريقة فعالة حتى الآن :)

تحياتي...

#6

يمكن الاستفادة من cmd

ping www.hostname.domain

#7
يمكن الاستفادة من cmd
ping www.hostname.domain

ليست ناجحة داءما وهي في الكود االول الذي كتبته

شكرا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…