سؤال

أحاول تنزيل مصدر HTML لموقع ويب باستخدام ملف WebClient.DownloadData() طريقة.

من المفترض أن تعطيني طريقتي المصدر:

public string GetSite(string URL)
    {
        Uri Site = new Uri(URL);
        byte[] lol = Client.DownloadData(Site);
        SiteSource = Encoding.ASCII.GetString(lol);
        return SiteSource;                    
    }

لقد قمت بفحص ثلاثي وعندما أكتب نفس عنوان URL بالضبط من معلمة URL التي أرسلها بهذه الطريقة، تقوم برامجي بتنزيل شيء آخر تمامًا.

الضغط على ctrl+U في فايرفوكس لرؤية الكود المصدري يوضح لي ما أريد رؤيته (مرة أخرى، HTML بسيط)، ولكن في برنامجي أرى شيئًا مختلفًا تمامًا.

ما يعطي؟

للتوضيح:

تخيل أنك تكتب في Firefox www.google.com، وعند عرض المصدر في Firefox ترى:

<html>
   <head>
   </head>
   <body> 
       <h1>Hello!</h1>
   </body>
</html>

ولكن إذا كنت سأستخدم DownloadData طريقة ل نفس عنوان URL بالضبط, ، سيقوم برنامجي بتنزيل كود المصدر مثل هذا:

<html>
   <head>
   </head>
   <body> 
       <h1>Bonjour!</h1>
   </body>
</html>
هل كانت مفيدة؟

المحلول

قد يقوم الموقع بالكشف عن المتصفح، ويقدم HTML مختلفًا اعتمادًا على ما إذا كان العميل يعتبر Firefox أو IE أو زاحف ويب وما إلى ذلك.

نصائح أخرى

قد يستخدم الموقع ملفات تعريف الارتباط التي تم تعيينها في Firefox أو رأس وكيل المستخدم أو رؤوس HTTP الأخرى لتحديد المحتوى الذي يجب إرساله إليك.

نظرًا لأن برنامج C# الخاص بك يرسل بيانات مختلفة عن Firefox، فقد يرسل الموقع محتوى مختلفًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top