ايران ويج

نسخه‌ی کامل: ارسال اطلاعات به سوکت
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام لطفا این سوال منو حتما جواب بدید

به طور مثال من با سوکت به گوگل وصل شدم.
Winsock1.Connect "google.com", 80

چطور میتونم متنی در سرچ باکس گوگل بنویسم و اینتر کنم و نتیجه رو با DataArrival سوکت بگیرم؟
بايد با پرتوکل HTTP آشنا بشی متأسفانه وقت نميکنم خودم توضيح بدم اما ميتونی در باره پروتکل HTTP سرچ کنی و از اسنيف کردن هم ميتونی بهره ببری


کاش میشد یه چیزایی بهم بگی...... :(

در مورد پروتکل http خوندم, ظاهرا باید با POST اطلاعاتی ارسال کنم ولی روی چه ساختاری؟
آیا این درخواست برای باز شدن گوگل درسته آقا؟
کد:
Dim strData As String
    strData = strData & "GET http://www.google.com/ HTTP/1.1" & vbCrLf
    strData = strData & "Host: www.google.com" & vbCrLf
    strData = strData & "Accept: */*" & vbCrLf & vbCrLf
    Socket.SendData strData

بعد از کانکت شدن و ارسال این درخواست چیزی از طریق DataArrival دریافت نمیکنم.

میشه راهنمایی کنید؟؟؟؟؟؟؟؟/
تو لاين اول هيچوقت لينک به صورت کامل درج نميشه اينکه شما گذاشتيد مربوط به HTTP prxoy ميشه که البته فرق چندانی با HTTP نداره
به اين صورت:
کد:
Dim strData As String
    strData = strData & "GET / HTTP/1.1" & vbCrLf
    strData = strData & "Host: www.google.com" & vbCrLf
    strData = strData & "Accept: */*" & vbCrLf & vbCrLf
    Socket.SendData strData

اگه نميخواهيد وارد دنگ و فنگ های سوکت بشيد کافيه از ابزار مخصوص به اين کار استفاده کنيد
Microsoft Winhttp Services, version5.1 رو تو قسمت رفرنس تيک بزن:
مثال:
کد:
Private WithEvents Http1 As WinHttp.WinHttpRequest


Private Sub Form_Load()
Set Http1 = New WinHttp.WinHttpRequest
Http1.Option(WinHttpRequestOption_EnableRedirects) = False 'ghyre faeal kardan Auto Redirect
End Sub

Private Sub Command1_Click()
Http1.Open "GET", "http://google.com", True
Http1.SetRequestHeader "Accept", "*/*"
Http1.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
'Http1.SetRequestHeader "Connection", "Close"
Http1.SetRequestHeader "Cache-Control", "no-cache"
'Http1.SetProxy 2, "127.0.0.1:9666"  '<===ip va porte http prxoy'
Http1.Send
End Sub

Private Sub Http1_OnError(ByVal ErrorNumber As Long, ByVal ErrorDescription As String)
Text1.Text = "sock error: " & ErrorNumber & " " & ErrorDescription
End Sub

Private Sub Http1_OnResponseFinished()
'Text1.Text = Http1.GetAllResponseHeaders 'get http header
Text1.Text = Http1.ResponseText
End Sub
آقا واقعا ازت ممنونم, نحوه کار کرد این کدها رو فهمیدم. رویدادهای winhttp هم 4 تا بود که کارشون مشخص بود.
option ها زیاد بودن که حالا از msdn چک میکنم.

فقط.........
HttpSocket.Abort: قطع کردن اتصال
GetAllResponseHeaders: دریافت کل هدر
GetResponseHeader: ؟
Open: متد get برای ارسال درخواست وب پیج | متدهای دیگه رو بلد نیستم.
Option: اعمال تنظیمات
ResponseBody: ؟
ResponseStream: ؟
ResponseText: پاسخ دریافتی از درخواست
Send: ارسال درخواست
StatusText و Status: هم که مشخصه | وضعیت اتصال
WaitForResponse: منتظر پاسخ
+ کل توابعی که با set شروع میشن

میشه لطف کنید یه توضیح در مورد این مواردی که نمیدونم کارشون چیه بدید؟
ببخشید خیلی مزاحمتون شدم.

و مهمترین چیز که چطور میتونم به یک تکست باکس درون یه سایت اطلاعاتی ارسال کنم و یک دکمه خاصی رو کلیک کنم.

اگه براتون مقدور هست ممنون میشم جواب بدید, مرسی
برای فرستادن متود پست هم به اين صورت بايد انجام بدی

کد:
Http1.Open "POST", "https://my.site.com/login/login/index.php", True
    Call Http1.SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    Call Http1.SetRequestHeader("Connection", "Close")
    Call Http1.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5")
    Call Http1.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    Call Http1.Send("txtUser=abasgholimirza&txtPass=123456")

کلاً در مورد توابع و کاربرد هاش سرچ کنی موارد خوبی پيدا ميکنی
GetResponseHeader اسمش روشه هدر دريافت شده رو برميگردونه , اطلاعاتی مثل نوع و حجم صفحه... يا اگه کوکی ست بشه کوکی از اين قسمت ميتونی بگيريش .
بقيه توابع دقيقاً يادم نيست ديباگ بگير.

تابع SetRequestHeader هم مربوط به تنظيمات هدر درخواست ها هست, مثلاً برای متود post بايد نوع درخواست رو ذکر کنيد

کد:
Call Http1.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")

يا اگه درخواست نياز به کوکی داشته باشه:
کد:
Call Http1.SetRequestHeader("Cookie", "kookie man")

نقل قول: و مهمترین چیز که چطور میتونم به یک تکست باکس درون یه سایت اطلاعاتی ارسال کنم و یک دکمه خاصی رو کلیک کنم.
مسلما بله,کلاً مبنای کار وب بر اساسن پروتکل HTTP هست اين اکتيوکس هم برای همين کار ساخته شده, تقريباً تمام کارهايی که با بروزر ميشه انجام داد رو ميشه با اين و يا سوکت نويسی انجام داد

استاد واقعا ازتون ممنونم. لطف بزرگی کردید. مرسی

[تصویر:  Thanks-20.gif]



آقا برای مثال این درسته؟

کد:
HttpSocket.Send "firstname=hamed&secondname=damaavandi&gender=m&mm=1&dd=12&yyyy=1992&country=ir"

اگر به https://edit.yahoo.com/registration? با متد post کانکت شده باشم


یجا تونستم :
کد:
HttpSocket.Open "POST", "http://www.checkdomain.com/cgi-bin/checkdomain.pl", True
HttpSocket.Send "domain=maksdsacs.com"

ولی یه صفحه هست مثلا قوانینه, یه چک باکس داره یه دکمه که قبول کردم. اون رو باز نمیدونم چیکار کنم.

انگار این سوال ها تمومی نداره, بیخیال دیگه بیشتر از این نمیخوام مزاحمتون بشم. لازم نیست جواب بدید به سوالاتی که کردم. :x

ممنون که تا اینجا کمکم کردید