PDA

View Full Version : سوال: دریافت لینک جدید



pandasoft
جمعه 03 بهمن 1393, 15:41 عصر
با سلام خدمت دوستان و اساتید محترم
احتمالا همگی با سیستم VIP که چند وقته تو خیلی از سایتا و فروم ها مد شده آشنا هستید
این سیستم در مورد سایتای دانلود فایل به این صورت که بعد از ورود به سایت یا وارد کردن یوزر و پسورد اکانتتون در دانلود منیجر لینک مستقیم در اختیار شما قرار داده میشه
با توجه به مثال بالا می خوام برنامه ای بنویسم که با داشتن یک اکانت VIP و دریافت لینک غیر مستقیم لینک مستقیم رو بهمون بده
دقیقا کاری که نرم افزار های دانلود منیجر انجام میده

لینک غیر مستقیم -----»استفاده از یوزر و پسورد ------» دریافت لینک مستقیم


با تشکر از همگی

meys34
شنبه 04 بهمن 1393, 19:07 عصر
برای لوگین کردن راحت ترین راه استفاده از کد زیر هست:


http://USERNAME:PASSWORD@YOURSITE.com

اگر بخوای میتونی از روش زیر هم استفاده کنی:

http://support.microsoft.com/kb/172998

pandasoft
پنج شنبه 09 بهمن 1393, 19:21 عصر
ممنون از شما بحث ورود حل شد حالا وقتی لینک دانلود رو بدیم یه لینک دیگه بهمون بر میگردونه که دانلود رو شروع میکنه اون لینک رو چطور بدست بیاریم ؟

meys34
پنج شنبه 09 بهمن 1393, 21:03 عصر
البته باید خودت تغییرات لازمه رو بهش بدی تا بشه اون چیزی که میخوایی...
چون WebBrowser1.Navigate هم باعث فراخوانی WebBrowser1_BeforeNavigate خواهد شد...

Private Sub Command1_Click()
WebBrowser1.Silent = True
WebBrowser1.Navigate "http://USERNAME:PASSWORD@YOURSITE.com"
End Sub

Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
Debug.Print URL
End Sub

pandasoft
جمعه 10 بهمن 1393, 11:42 صبح
تشکر ویژه از شما فقط چندتا سوال
برای ورود با یوز و‌پسورد آدرس صفحه خاصی باید وارد بشه مثلا در مورد همین فروم برنامه نویس چه شکلی باید آدرس رو تایپ کنیم ؟

در مورد پاسخ دوم نمیشه اول چک کرد که لود صفحه کامل شده باشه بعد آدرس جدید رو گرفت ؟ یا مثلا آدرس رو چند با فراخوانی کنیم و با آدرس اولیه از نظر عدم برابر چک کنیم ؟

meys34
جمعه 10 بهمن 1393, 12:10 عصر
اصولا هر کاری که بخوایید میشه انجام داد فقط نیاز به دانش کمی از HTML هست...



هر شی در HTML میتونه name و Class و ID و یا هر سه رو داشته باشه...

ID منحصر به فرد هست توی هر صفحه ولی Name یا Class میتونه تکراری باشه...

باید اسم یا آیدی اون شی رو توی HTML پیدا کنید و کاری که خواستید رو روش انجام بدید...

برای پیدا کردن اشیا در HTML هم میشه از هر مرورگری استفاده کرد کافیه راست کلیک کنید روش و InspecElement رو انتخاب کنید...

http://barnamenevis.org/attachment.php?attachmentid=126644&d=1418738468



برای ورود با یوز و‌پسورد آدرس صفحه خاصی باید وارد بشه مثلا در مورد همین فروم برنامه نویس چه شکلی باید آدرس رو تایپ کنیم ؟


معمولا با استفاده از دستور زیر و دستورات مشابه میشه اطلاعات رو وارد سایت کرد و روی دکمه مورد نظر کلیک کرد...

WebBrowser1.Document.getElementById( "آیدی تکست مورد نظر" ).Value = Text1.Text




در مورد پاسخ دوم نمیشه اول چک کرد که لود صفحه کامل شده باشه بعد آدرس جدید رو گرفت ؟ یا مثلا آدرس رو چند با فراخوانی کنیم و با آدرس اولیه از نظر عدم برابر چک کنیم ؟

Do Until WebBrowser1.Busy = False And WebBrowser1.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop

pandasoft
جمعه 10 بهمن 1393, 12:33 عصر
ممنون اما من منظورم استفاده از همون
آدرس بار بود برای ورود

meys34
جمعه 10 بهمن 1393, 13:22 عصر
نمیشه به این روش....

در واقع دو نوع لوگین کردن داریم:

1- لوگین از طریق ارسال مستقیم یوزرنیم پسورد در آدرس بار
(که در واقع یوزرنیم پسورد رو توی Header دستور باز کردن سایت قرار میده)


2- لوگین از طریق صفحه HTML (سایت برنامه نویس از این روش استفاده میکنه)


نمیدونم امنیت کدوم بیشتره
ولی اکثر سایت ها چون میخوان از Cookies استفاده کنند تا کاربر هر دفعه یوزرنیم پسوردش رو وارد نکنه از روش دوم استفاده میکنند

meys34
چهارشنبه 06 اسفند 1393, 21:39 عصر
برای لوگین کردن راحت ترین راه استفاده از کد زیر هست:


http://USERNAME:PASSWORD@YOURSITE.com

اگر بخوای میتونی از روش زیر هم استفاده کنی:

http://support.microsoft.com/kb/172998

به درخواست یکی از دوستان روش دوم رو نوشتم:

'http://support.microsoft.com/kb/172998

Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.YourSite.com", Headers:="Authorization: Basic " & encodeBase64("USERNAME:PASSWORD") & vbCrLf
End Sub

Private Function encodeBase64(ByVal txtData As String) As String
Dim objXML As Object
Dim objNode As Object
Dim txtByte() As Byte

Set objXML = CreateObject("MSXML2.DOMDocument")

Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"

txtByte = StrConv(txtData, vbFromUnicode)
objNode.nodeTypedValue = txtByte
encodeBase64 = objNode.Text

Set objNode = Nothing
Set objXML = Nothing
End Function