-
1 ضمیمه
نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
این چند خط مقادیر دو تا فیلد مثلا UserName و Password رو به آدرسی که نوشته شده با متد Post میفرسته.
این کار میتونه برای پر کردن فرمهای اینترنتی هم مفید باشه یعنی یک فرم Html در یک سایت رو مثلا از دلفی پر کنید ، برای این کار سورس صفحه رو ببینید مقادیر Input رو پیدا کنید ، که در واقع همون فیلدها هستند و اسمشون رو در بیارید بعد هم مقداری که میخواهید بهشون نسبت بدید رو مثل مثال تعیین کنید ، بعد آدرسی که بهش فرستاده میشند رو با پیدا کردن Action صفحه بدست بیارید و اطلاعات رو پست کنید :
procedure THttpTestForm.btSendClick(Sender: TObject);
var
ARequestContent : TStringList;
AResponse: String;
begin
ARequestContent := TStringList.Create;
try
ARequestContent.Add('username=' + edName.Text);
ARequestContent.Add('password=' + edPass.Text);
AResponse := IdHTTPTest.Post('http://AWebSite.com/login.php', ARequestContent);
....
finally
ARequestContent.Free;
end;
end;
کد برنامه رو هم میزارم. منتها این کد رو اجرا نکنید چون فایده ای نداره باید آدرس و اسم فیلدها رو برای جای خاصی در نظر بگیرید.
جواب برگشتی که توی AResponse هست اون متن Htmlی هست که سرور بر میگردونه که میتونید هرطوری دوست دارید پروسسش کنید.
این یک مثال خیلی ساده هست ، یکمی خودتون با Idhttp بازی کنید کلی اکانات دیگش رو هم میبینید.
نکته مهم :
برای ارسال پارامترها به سرورهای دات نتی لازم هست که حتما خط زیر رو در Header ریکوستتون بزارید و الا پارامترها رو سرور نمیخونه ، من زیاد دیدم اینجا میپرسند که چرا وب سرویسها نمیتونند با دلفی ارتباط برقرار کنند، یا چرا پارامترهاشون توی سرور خالی دریافت میشند، دلیلش نبودن این هدر هست ، و البته ربطی به دلفی هم نداره حتی توی C# هم اگر از HttpWebReuest استفاده مکینید باید این رو به هدر اضافه کنید :
Content-Type: application/x-www-form-urlencoded.
کلمات کلیدی : TIdHTTP، دلفی ، Indy، Post، ایندی ، Client، Form, Html
-
با تشکر
این مثال را در مورد سایت یاهو (میل) می تونید تکمیل کنید؟
-
اگر فقط کد رو نشوته بودم این سوالات عیبی نداشت ، اما وقتی کل پروسه بدست آوردن فیلدها و بدست آوردن اکشن فرم رو نوشتم ، دیگه بهتره که به عنوان تمرین هم که شده خودت این کار رو انجام بده و برای بقیه بزار....
-
سلام
من از تو سورس فیلدهای UserName و Passwd را به عنوان Input یافتم. و جایگزینی کردم. و آدرس را هم به دو شکل
http://www.Yahoomail.com/
و
https://login.yahoo.com/config/mail?.intl=us
وارد کردم. اولی ConnectionRefused میده دومی بلافاصله خطایی مبنی بر اشتباه بودن آدرس مسده.
شاید مشکل از اینه که پروتکل اون Https ه نه Http
-
نه سیستم ورودی ساهو پیچیده تر از این حرفاست که بخواهید با یک درخواست و ارسال حلش کنید و باید به این نکته که سرور یاهو نیز حفاظت شده است اشاره شود و برای ورود درخواست ها را به صفحات دیگه ارجاع میدهد.
یه نگاهی هم به این فرم بیانداز با این می تونی ورودی را تکمیل کنید.
<form method="post" action="https://login.yahoo.com/config/login?" name="login_form">
<input name=".src" value="ym" type="hidden">
<input name=".tries" value="0" type="hidden">
<input name=".done" value="http://mail.yahoo.com" type="hidden">
<input name=".md5" value="" type="hidden">
<input name=".hash" value="" type="hidden">
<input name=".js" value="" type="hidden">
<input name=".partner" value="" type="hidden">
<input name=".slogin" value="praiser_man" type="hidden">
<input name=".intl" value="us" type="hidden">
<input name=".fUpdate" value="" type="hidden">
<input name=".prelog" value="" type="hidden">
<input name=".bid" value="" type="hidden">
<input name=".aucid" value="" type="hidden">
<input name=".yplus" value="" type="hidden">
<input name=".chldID" value="" type="hidden">
<input name="pkg" value="" type="hidden">
<input name="hasMsgr" value="0" type="hidden">
<input name="login" id="username" value="test_user" type="hidden">
<input name="passwd" id="passwd" value="password" type="hidden">
</form>
یا حق ...
-
علیرضا دست درد نکنه.....
فقط داداش میشه بگی چجوری بعد ازlogin کردن می تونیم به یک صفحه خاص دسترسی داشته باشیم.منظورم اینه که با Loggin کردن از این طرقSession ای واسه رفتن به صفحات دیگه ایجاد میشه یا نه؟
-
بله session ورودی تعریف و تمامی صفحاتی که نیاز به نام کاربری دارد مورد استفاده قرار خواهد گرفت.
یا حق ...
-
ببین چند روش Session Managment در HTTP وجود داره :
Cookies: که سرور برای کلاینت زمانی که شناسایی شد ،یک Cookie میفرسته و هر دفعه که مجددا کلاینت خواست با سرور ارتباط برقرار کنه این کوکی رو میفرسته و سرور متوجه میشه که قبلا این کلاینت رو شناسایی کرده و از توی لیست سشنهاش با کمک اون کوکی این سشن مخصوص کلاین رو پیدا میکنه.
URL Tracking: در این روش بجای کوکی از یک شماره Session استفاده میشه که بصورت یک پارامتر بعد از Url صفحاتی که کاربر توشون میره ، قرار میگیره و سرور هربار کاربر رو با این پارامتر شناسایی میکنه
Hidden Fields: در این روش یک سری Input از نوع Hidden توی هر پاسخی که سرور میسازه گذاشته میشه که اطلاعات لازم برای شناسایی Session توی این فیلدها هست و کلاینت هم هربار که میخواد دوباره به سرور مراجعه کنه این اطلاعات رو مجددا برای سرور میفرسته.
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
برای وصل شدن به سرور یاهو می تونید از کد زیر استفاده کنید!
var
SL: TStringList;
begin
IdHTTP1.IOHandler:=ssl;
sL := TSTringList.Create;
SL.Values['login'] := txtuser.Text;
SL.Values['passwd'] := txtpasword.Text;
Memo1.Lines.Text:=IdHTTP1.Post('https://login.yahoo.com/config/login?',sl);
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
با سلام
ببخشید اما من به این خطا بر خوردم
زمانی که میخواد اطلاعات رو به سرور ارسال کنه این خطا رو میده
سایت مقصد .Net هستش و هدر رو هم برابر با تنظیمات خودتون تنظیم کردم یکبار هم هماند یک درخواست ارسالی از خود سایت اما باز هم همین خطا .
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
نقل قول:
نوشته شده توسط
undefined
با سلام
ببخشید اما من به این خطا بر خوردم
زمانی که میخواد اطلاعات رو به سرور ارسال کنه این خطا رو میده
سایت مقصد .Net هستش و هدر رو هم برابر با تنظیمات خودتون تنظیم کردم یکبار هم هماند یک درخواست ارسالی از خود سایت اما باز هم همین خطا .
البته ميدونم که تاپيک خيلي قديمي هست ولي گفتم شايد کسي هنوز جواب سؤال رو نگرفته باشه.
فکر کنم اگه پراپرتي HandleRedirects مربوط به شيء HTTP رو در حالت True قرار بديد مشکل حل بشه.
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام من میخوام عکس های Twebbrowser رو بدون اینکه از url استفاده کنم ذخیره کنم
در صورت استفاده کردن از URL عکس رفرش شده و عوض میشود
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام
من هم برای ارسال و دریافت به سرور از کدی مثل کد شما استفاده کردم
مشکل من در session هستش
من لاگین می کنم و صفحه جدید رو دریافت می کنم ولی وقتی در خواست جدید رو ارسال می کنم دوباره اطلاعات صفحه لوگین برام ارسال میشه
حالا می خوام ببینم در جواب اولی چطوری طلاعات session رو بدست بیارم و چطور به همراه درخواست دوم ارسال کنم
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
نقل قول:
مشکل من در session هستش
شما می تونید با یک اسنیفر بررسی کنید که سایت مربوطه برای session از چه مکانیزمی استفاده میکنه؛ در اکثر مواقع مکانیزم استفاده شده مبتنی بر Cookie هست. اگر مبتنی بر Cookie باشه، شما باید بعد از لاگین در سایت، Cookie مربوطه را ذخیره کنید، و در درخواست های بعدی آن را به سایت ارسال کنید. برای این کار، یک Cookie Manager به پروژه اضافه کنید، و به خصوصیت CookieManager از کلا TIdHttp اختصاص بدید.
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام
من CookieManagerداشتم و به idHTTP هم وصلش کرده بودم و بخاطر همین فکر کردم شاید به جای کوکی از session استفاده میکنه
ولی برای CookieManager هیچ کدی ننوشتم
نمی دونم چطور مقدار کوکی ها رو بگیرم و چطور دوباره بفرستم
سرچ هم کردم به نتیجه ای نرسیدم
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
نقل قول:
نمی دونم چطور مقدار کوکی ها رو بگیرم و چطور دوباره بفرستم
اگر مقدار خصوصیت AllowCookies مساوی True باشه، IdHttp به طور خودکار کوکی های ارسالی از سرور را به CookieManager پاس میده، و هر زمان که درخواستی به اون سرور ارسال میکنه، کوکی های مربوط به اون سرور رو هم از CookieManager میگیره و با درخواست به سرور ارسال میکنه. پس عملا نیازی نیست که شما کار خاصی انجام بدید.
اگر شک دارید که اون سایت دقیقا چطور state رو حفظ میکنه، بهتره با یک اسنیفر مراحل ارسال درخواست از یک مرورگر عادی وب به اون سرور رو capture کنید، و با مراحل ارسال درخواست در برنامه خودتون مقایسه کنید؛ ببینید مرورگر شما دقیقا چه درخواستی و با چه پارامترهایی به سرور ارسال میکنه.
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
AllowCookies هم True هستش
من اسنیفر خوب پیدا نکردم اگه سراغ داری معرفی کن ممنون
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام
اگر صفحه ی مورد نظر یوزر و پسورد را بصورت یک پنجره ی popup بگیرد چه؟
مثلا آدرس صفحه اینجوری باشد
کد HTML:
http://10.251.16.33/IN_monitoring?
!!
آن وقت چطوری بایستی یوزر و پسورد را بهش بفرستیم؟
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
نقل قول:
اگر صفحه ی مورد نظر یوزر و پسورد را بصورت یک پنجره ی popup بگیرد چه؟
یک صفحه وب به دو صورت کلی میتونه اطلاعات مربوط به اعتبار سنجی کاربر را دریافت کنه؛ اول اینکه از خاصیت Authentication مربوط به HTTP استفاده کنه، مثلا از Basic Authentication استفاده کنه، که در اون صورت مرورگر خودش متوجه میشه که باید از کاربر اطلاعات مربوطه رو بگیره و به سرور ارسال کنه. در این حالت مرورگر یک پنجره Pop-up برای دریافت اطلاعات مربوطه به کاربر نمایش میده. دوم هم اینکه از یک فرم HTML استفاده شده باشه که کاربر در فیلدهای اون اطلاعات مورد نظر را وارد کنه، سپس دکمه Submit فرم را کلیک کنه، تا اطلاعات به سرور مربوطه برای پردازش ارسال بشه. هر دو حالت فوق رو میشه با استفاده از اسنیفر بررسی کرد، البته به شرطی که اتصال مربوطه از نوع HTTPS نباشه.
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
با سلام :قلب:
نقل قول:
البته به شرطی که اتصال مربوطه از نوع HTTPS نباشه.
در تکمیل صحبتهای vcldeveloper باید بگویم که با Colasoft Capsa 7 میشه HTTPS رو هم اسنیف کرد البته اگر از نوع کلید عمومی باشد مثل FaceBook و ... در برخی حالات هم مثلاً یک اپلیکیشن با یک کلید خصوصی از HTTPS برای برقراری اطلاعات استفاده می کنه که میشه اون رو شنود کرد ولی از اونجایی که این اطلاعات کد میشن هیچ چیزی نمیشه از اون متوجه شد و شنود اونها عملاً بی فایده است و در صورتی میشه اون رو دیکد کرد که به کلید خصوصی اون هم دسترسی داشته باشیم و لا غیر.
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
خوب دوستان ممنونم من نمی دونم چطوری sniff بکنم ؟
حالا با یه نرم افزار مثل Wireshark-win64-1.10.1
ولی من اینو نصب کردم ولی نمی دونم باید چیکار بکنم
چه اطلاعاتی بدست بیارم؟
چطوری؟
و چیکارشون بکنم؟
:متفکر:
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
نقل قول:
در تکمیل صحبتهای vcldeveloper باید بگویم که با Colasoft Capsa 7 میشه HTTPS رو هم اسنیف کرد البته اگر از نوع کلید عمومی باشد مثل FaceBook و ... در برخی حالات هم مثلاً یک اپلیکیشن با یک کلید خصوصی از HTTPS برای برقراری اطلاعات استفاده می کنه که میشه اون رو شنود کرد
برای شنود اتصالات HTTPS نیاز به کلید Session مبادله شده بین دو طرف هست. این کلید محتوای رد و بدل شده را با یک الگوریتم متقارن رمز میکنه. در HTTPS این کلید Session با استفاده از الگوریتم های نامتقارن مثل RSA رمز میشه. و بین دو طرف مبادله میشه. بعدش در ادامه اتصال داده ها با این کلید رمز میشند. برای رمزگشایی از این اطلاعات نیاز به کلید خصوصی وب سایت ارائه کننده اتصال HTTPS هست. پس چیزی که اون برنامه مورد اشاره شما دریافت میکنه، بیشتر از اونی که Wireshark میگیره نیست. داده کد شده ای که کلید رمزنگاری اش موجود نباشه و امکان شکستن رمز اون هم برای کاربر فراهم نباشه، به درد نمیخوره.
نقل قول:
حالا با یه نرم افزار مثل Wireshark-win64-1.10.1
ولی من اینو نصب کردم ولی نمی دونم باید چیکار بکنم
خودش به اندازه کافی راهنما و مستندات داره. البته در کار با ابزاری مثل Wireshark فرض بر این هست که شما دانش ابتدایی درباره شبکه های کامپیوتری و پروتکل هایی مثل HTTP دارید. البته ابزارهای ساده تری که فقط برای پروتکل HTTP مورد استفاده قرار می گیرند در Firefox و یا Chrome وجود دارند که با استفاده از اونها می تونید اطلاعات مبادله شده بین یک سایت و مرورگر را مشاهده کنید. Wireshark نسبت به اونها ابزار پیشرفته تر و با کاربری گسترده تری هست.
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
ببینید این رو توی کدهای دیتابیس فایرفاکس پیدا کردم که برای نگهداری یوزر و پسورد همون صفحه هستش
نمی دونم بدرد می خوره؟
<entry host="http://10.251.16.3" user="user" password="pass" formSubmitURL="" httpRealm="IDU" userFieldName="" passFieldName=""/>
و اگر بدرد بخوره چطوری ازش استفاده بکنم که کارم راه بیافته؟
مرسی
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام ؛
پیرو بحث vcldeveloper نرم افزارهایی هستند که میتونند حملاتی نظیر MIM بزنند ( Man in the middle ) و با یک Certificate جعلی اطلاعات رو استخراج کنن ، مثلا Fiddler با یک Fake SSL Certificate میتونه داده های HTTPS رو استخراج کنه ؛ Fiddler خودش رو به عنوان یک Proxy برای انجام حملات MIM معرفی میکنه .
- البته این Certificate چون جعلی هست موقع ورود تو سایت های مختلف هشدارهایی هم نمایش میده ولی در هر صورت میتونه برای Sniff کردن گزینه مناسبی باشه .
- اگر دنبال اطلاعات بیشتر در مورد Fiddler هستید کتابی با نام Debugging with Fiddler هست که میتونه کمکتون کنه .
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام
اگر صفحه مورد نظر کپچا داشته باشه و اونو از یه URL دیگه دریافت کنه، حالا چطور باید عمل کرد؟(منظورم در مورد Cookie هاست)
ممنون
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام دوست عزیز
من هنوز اون مشکلم رو نتونستم حل بکنم
ولی برای موضوع کپچاپ می دونم که بایستی با کدهای Html که از کامپوننت IDHTTP بعد از گزشتن از مرحله ی مشکل من و با پردازش عکس (البته بسته به نوع کپچاپ) و یک تاکتیک که در جستجوهای فراوانی که انجام دادم در یک سایت دیدم و اون پرکردن یک edit در صفحه وب و ارسال مقادیر یا فشردن دکمه یا باتتن بود میشه اینکارو انجام داد
پیچیده بود نه؟
البته شاید دوستان راههای بهتری هم بلد باشند.
اگر به نتیجه رسیدی تو سایت بزار ما هم استفاده بکنیم
موفق باشید
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
سلام
من با کد زیر کپچا رو دریافت و در یک TImage نمایش میدم
procedure TForm1.lblInitClick(Sender: TObject);
var
response: TMemoryStream;
gif: TGIFImage;
html: string;
begin
html := IdHTTP.Get(URLGET);
mem.Text := html;
GetHiddenFieldValues(html);
response := TMemoryStream.Create;
gif := TGIFImage.Create;
try
IdHTTP.Get(URLIMG, response);
response.Position := 0;
gif.LoadFromStream(response);
imgCaptcha.Picture.Assign(gif);
finally
gif.Free;
response.Free;
end;
end;
اما در مورد طریقه ارسال اون و فیلدهای Hidden مشکل دارم. نمیدونم اصلا چیکار باید کرد!
-
نقل قول: نمونه : ارسال اطلاعات به یک سرور با استفاده از Http
:-)کد جالبی بود من خیلی چیزا بلد نیستم و کمی چیز یاد گرفته ام
نمیدونم
دوستان دیگه حتماکمکتان خواهند کرد
ولی بیشتر سرچ بکن
کلمات کلیدی مختلفی را در گوگل امتحان بکن
موفق باشی