PDA

View Full Version : آموزش: Connect شدن به سرور HTTPS با Winsock



just4froum
سه شنبه 17 مرداد 1391, 14:48 عصر
با سلام به همگی :

دیدم خیلی از دوستان دنبال Connect شدن به سرور HTTPS یا همون Soc ks هستند گفتم نحوه این کار رو برای دوستان بگذارم.

توجه : من تمامی این مراحل را خودم بدست آوردم و از منابع معتبری نخوندم پس امکان هر گونه اشتباه در آن هست پس درصورت مشاهده خواهشا اطلاع دهید تا متن را درست کنم و اشتباه آموزش ندهم.


برای کار با ابزار Winsock و متصل شدن به سرور ساکس باید اطلاعاتی راجع به Header داشته باشید پس در صورت نیاز می توانید به این صفحه مراجعه کنید (http://barnamenevis.org/showthread.php?124416-%D9%81%D8%B1%D8%B3%D8%AA%D8%A7%D8%AF%D9%86-%D9%85%D9%82%D8%A7%D8%AF%DB%8C%D8%B1-%D8%A8%D9%87-%D8%B3%D8%A7%DB%8C%D8%AA-(%DA%A9%D8%A7%D9%85%D9%84)) که جناب r0ot$harp به خوبی توضیح داده اند.(خود من هم از این پست یاد گرفتم)

خوب میریم سراغ مبحث اصلی :

1 - برای کانکت شدن به سرور HTTPS ابتدا باید Address و Port آن سرور را داشته باشید.

2 - با وینسوک به آن Address و Port متصل شوید. مانند :

Winsock1.Connect "Address", Port

البته فراموش نکنید که برای کانکت شدن ابتدا باید وینسوک در حالت Close قرار داشته باشد.

3 - منتظر بمانید تا وینسوک به سرور متصل شود و وقتی متصل شد آدرس مقصدی را که می خواهیم به آن توسط سرور HTTPS هیدر ارسال کنیم همراه با پورت برای سرور می فرستیم. (فرض Google.com) :

Private Sub Winsock1_Connect()
Dim Header As String

Header = "CONNECT google.com:80 HTTP/1.1" & vbCrLf
Header = Header & "Host: google.com" & vbCrLf & vbCrLf

Winsock1.SendData Header
End Sub

تذکر : در خط اول فراموش نکنید که پورت (80) رو همراه با آدرس (google.com) بفرستید

سپس منتظر میمانیم تا سرور به هیدر ما پاسخ دهد که پاسخی مانند زیر می دهد:(اگر سرور به درستی کار کنتد)


HTTP/1.0 200 Connection established



این یعنی سرور آمادست تا درخواستمون رو براش بفرستیم(به عنوان مثال ما همون هیدر که در پست بالا معرفی کردم رو می فرستیم) :

Dim Header As String

Header = "GET /search?hl=en&q=barnamenevis.org&btnG=Google+Search&aq=f&oq= HTTP/1.1" & vbCrLf
Header = Header & "Host: www.google.com" & vbCrLf
Header = Header & "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" & vbCrLf
Header = Header & "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf
Header = Header & "Accept-Language: en-US" & vbCrLf
Header = Header & "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & vbCrLf
Header = Header & "Keep-Alive: 300" & vbCrLf
Header = Header & "Connection: keep-alive" & vbCrLf
Header = Header & "Referer: http://www.google.com/" & vbCrLf & vbCrLf

Winsock1.SendHeader Header

و سپس منتظر نتیجش می مونیم. نتیجه ای که برای ما فرستاده میشه از طریق سرور HTTPS هست یعنی ما با موفقیت به سرور HTTPS وصل شده با آن سرور در گوگل یک چیزی رو سرچ کردیم و نتیجرو گرفتیم به همین راحتی.

امیدوارم این مقاله مفید واقع بشه

Veteran
سه شنبه 17 مرداد 1391, 15:01 عصر
:متفکر: پس username و password
کجا وارد میکنیم ؟

just4froum
سه شنبه 17 مرداد 1391, 15:49 عصر
:متفکر: پس username و password
کجا وارد میکنیم ؟

راست میگید این نکترو می خواستم بگم اما نمی دونم چی شد موقع نوشتن فراموش کردم.

توضیحات :

در HTTPS یوزر و پس به شکل مقابل(که با دو نقطه از هم جدا شدن) به سرور ارسال می شوند :

User:Pass

اما در قالب Base64 اینکد شدند . به عنوان مثال اگر یوزر سروری Just و پسورد آن froum باشدباید عبارت Just:froum را در قالب base64 اینکد کنیم ( که اینکد شده آن میشود SnVzdDpmcm91bQ==) و به سرور به صورت زیر بفرستیم.

Private Sub Winsock1_Connect()
Dim Header As String
Header = "CONNECT google.com:80 HTTP/1.1" & vbCrLf
Header = Header & "Host: google.com" & vbCrLf
Header = Header & "Proxy-Authorization: Basic SnVzdDpmcm91bQ==" & vbCrLf & vbCrLf
Winsock1.SendData Header
End Sub


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

یک سورس هم ضمینه کردم که توسط آن می توانید حروف را با Base64 اینکد کنید.

موفق و سربلند باشید .

arenaw
چهارشنبه 18 مرداد 1391, 04:24 صبح
در HTTPS یوزر و پس به شکل مقابل(که با دو نقطه از هم جدا شدن) به سرور ارسال می شوند :

User:Pass
اما در قالب Base64 اینکد شدند . به عنوان مثال اگر یوزر سروری Just و پسورد آن froum باشدباید عبارت Just:froum را در قالب base64 اینکد کنیم ( که اینکد شده آن میشود SnVzdDpmcm91bQ==) و به سرور به صورت زیر بفرستیم.

اول یه تشکر به خاطر مطلبت
ولی فکر میکنم اگه عبارت just بخواد یوزر باشه و froum پسورد، چون تو هردوشون ممکنه از : هم استفاده بشه، باید اول هرکدوم رو جدا کد کنیم بعد : رو وسطشون بذاریم نه اینکه کل just:froum رو کد کنیم
اما درکل موفق نشدم به سرور https ام کانکت بشم، توی کدای تو header آدرس هاست همون سروره؟
اگه لطف کنی همینایی که گفتیو (قسمتی که یوزر پس ارسال میکنه، نه اولی) توی یه پروژه ساده (فقط واسه یادگیری) بنوسی و بذاری خیلی لطف میکنی

meys34
چهارشنبه 18 مرداد 1391, 12:03 عصر
اول یه تشکر به خاطر مطلبت
ولی فکر میکنم اگه عبارت just بخواد یوزر باشه و froum پسورد، چون تو هردوشون ممکنه از : هم استفاده بشه، باید اول هرکدوم رو جدا کد کنیم بعد : رو وسطشون بذاریم نه اینکه کل just:froum رو کد کنیم
اما درکل موفق نشدم به سرور https ام کانکت بشم، توی کدای تو header آدرس هاست همون سروره؟
اگه لطف کنی همینایی که گفتیو (قسمتی که یوزر پس ارسال میکنه، نه اولی) توی یه پروژه ساده (فقط واسه یادگیری) بنوسی و بذاری خیلی لطف میکنی

ممنون Just عزیز :تشویق::تشویق:
ما منتظر نمونه هستیم


just:froum anVzdDpmcm91bQ==
Just:froum SnVzdDpmcm91bQ==

ho3ein.3ven
چهارشنبه 18 مرداد 1391, 12:43 عصر
ممنون از شما. اگه پروژه رو بزاری خیلی بهتره .

just4froum
چهارشنبه 18 مرداد 1391, 16:11 عصر
با سلام :

من یه برنامه نوشتم که به سرور HTTPS وصل شده و سپس از سایت ip2location آی پی شما رو بر می گردونه.

با HTTPS رایگان امتحان کردم درست جواب داد ولی HTTPS ای که پسورد بخواد رو نداشتم که امتحان کنم ولی برنامه برای جفتش هست ، امتحان کنید اگر مشکلی بود بگید.

:قلب::قلب::قلب:

موفق و سربلند باشید.

IranVB
چهارشنبه 18 مرداد 1391, 18:44 عصر
سلام

Connect شدن به سرور HTTPS با Winsock ببخشید HTTPS پروتوکل نیست؟ (مثل پروتوکل Http
چون گفتین سرور HTTPS
باتشکر

just4froum
چهارشنبه 18 مرداد 1391, 18:48 عصر
سلام
ببخشید HTTPS پروتوکل نیست؟ (مثل پروتوکل Http
چون گفتین سرور HTTPS
باتشکر

فکر کنم راست میگید ، نمی دونم . آخه من اطلاعاتم در این ضمینه خوب نیست.

ممنون که تذکر دادین.

پس یعنی به یه سروری با پروتوکل HTTPS وصل میشیم درسته ؟

IranVB
چهارشنبه 18 مرداد 1391, 19:06 عصر
پس یعنی به یه سروری با پروتوکل HTTPS وصل میشیم درسته ؟ بله به همین صورت هست

m2011kh
چهارشنبه 22 آذر 1391, 21:53 عصر
فکر کنم راست میگید ، نمی دونم . آخه من اطلاعاتم در این ضمینه خوب نیست.

ممنون که تذکر دادین.

پس یعنی به یه سروری با پروتوکل HTTPS وصل میشیم درسته ؟ دوستان یاد آوری میکنم که وینساک فقط پروتل TCP و UTP رو پشتیبانی میکنه.
حالا شاید اون سروری که بهش متصل میشیم برای روند کارش(ارتباط با سرویس دهنده های اینترنت و یا جعل ایپی و تغییر ایپی یک کاربر ایرانی به یک کاربر از کشوری دیگر) از HTTPS استفاده کنه ولی قطعا ارتباط ما با اون سرور با پروتکل TCP صورت میگیره
متشکرم
MMD

ms-ninja
چهارشنبه 29 آذر 1391, 15:28 عصر
این سورسی که قرار دادید متصل نمیشه:گریه:

فقط تست میکنه

1009645
جمعه 09 فروردین 1392, 00:02 صبح
اگر ممکنه جواب این سوال رو هم بدید : کلیک (http://barnamenevis.org/showthread.php?390784-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-%D8%B3%D9%88%D8%B1%D8%B3-%DA%A9%D8%AF-%DB%8C%D8%A7-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-Winsock-%D8%A8%D9%87-Browser-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-HTTPS&p=1732122#post1732122)