شما باید فعالیت های اضافی شبکه تون (مثل دانلود فایل و سایت و غیره) رو متوقف کنید، و بعد از اجرای عملیات مورد نظرتون، Capture را در WireShark غیرفعال کنید، و به بررسی log ایجاد شده بپردازید. می تونید داده های دریافتی را به شکل های مختلفی فیلتر کنید. مثلا در این مورد، شما فقط به داده های HTTP نیاز دارید، نه به داده های پروتکل های دیگه. در هر حال، باید راهنمای WireShark رو مطالعه کنید.نصب کردم اجرا هم کردم .کلی رکورد نشون میده هیچی نمیشه فهمید که کدوم مال این لینک هست !
در این مورد خاص، من براتون بررسی اش رو انجام دادم:
وقتی یک مرورگر لینک مربوطه رو باز میکنه، یک درخواست HTTP GET صادر میکنه.
سرور در جواب این درخواست، کد 401 رو که از نظر HTTP به معنای لزوم ارائه مجوزهای مناسب هست، برگشت میده.
وقتی شما کد 401 دریافت می کنید، باید درخواست تون رو مجددا به سرور ارسال کنید، ولی این بار باید در Header درخواست HTTP تون اطلاعات مربوط به مجوز را هم درج کنید، تا سرور بتونه مجوز شما را بررسی کنه.
اطلاعات مربوط به مجوز شما باید در یک فیلد با نام Authorization در HTTP Header قرار بگیره.
در صورتی که از IdHTTP برای دریافت فایل استفاده می کنید، خودش در صورت دریافت کد 401، یک رویداد با نام OnAuthorization رو فراخوانی میکنه. این رویداد دو پارامتر مهم داره:
Authentication؛ که اطلاعاتی درباره نوع Authentication و مقادیر پارامترهای اون رو برگشت میده، و می تونید در این رویداد مقادیر پارامترهای اون رو تغییر بدید.
Handled؛ که مشخص میکنه آیا شما پردازش تان را با موفقیت انجام دادید، یا اینکه باید عملیات مربوطه با شکست مواجه بشه.
شما باید در این رویداد به فیلدهای Username و Password از پارامتر Authorization مقدار مناسب بدید، و مقدار Handled را هم True کنید.
IdHttp تا زمان خوانده شدن متن برگشتی از سرور، درخواست جدید رو (که حاوی اطلاعات مورد نظر هست) ارسال نمیکنه. برای اینکه این کار رو به طور خودکار بعد از اجرای OnAuthorization انجام بده، باید مقدار hoInProcessAuth رو در خصوصیت HttpOptions آن True کنید. به این ترتیب، درخواست HTTP GET جدید با username\password ایی که شما دادید، به سرور ارسال میشه.
دقت کنید که همه سایت ها لزوما از این روش برای اعتبارسنجی کاربر استفاده نمی کنند. این یکی از حالت های ممکن هست.
در ضمن، اگر دلفی نوع داده TIdAuthentication رو نمیشناسه، یونیت IdAuthentication را به لیست uses یونیت خودتان اضافه کنید.