PDA

View Full Version : خواندن اطلاعات URL جاری مرورگر



rezabaghaie
سه شنبه 15 بهمن 1392, 20:44 عصر
با سلام

میخوام یک برنامه طراحی کنم که URL که کاربر داره با مرورگرهاش میبینه رو بررسی کنه!

مثل دانلود منیجر که وقتی کاربر روی یک لینک کلیک میکنه بررسی میکنه که قابل دریافت هست یا نه!

میخوام اجزای URL رو بخونه

مثلا http یا https
ساب دامین یا دامنه اصلی
اگه ir بود بگه ایران (از دیتابیس بخونه)

فقط همینکه چجوری بخونه رو بگید ممنون میشم!

rezabaghaie
چهارشنبه 16 بهمن 1392, 01:52 صبح
میخوام URLَ رو به سه بخش زیر بررسی کنه::
http://google.com
بررسی کنه که اتصال امن (https) هستش یا نه
بررسی کنه که دامین اصلی یا ساب دامین هستش
بررسی کنه دامنه مال کدوم منطقه ست.

rezabaghaie
چهارشنبه 16 بهمن 1392, 12:42 عصر
اگه سخته یا غیر ممکنه بگید تا بیخیال بشم!

rezabaghaie
پنج شنبه 17 بهمن 1392, 00:31 صبح
236 بار مشاهده شده ولی هیچکس نظری نداده!

headshoter
پنج شنبه 17 بهمن 1392, 01:53 صبح
http://social.msdn.microsoft.com/Forums/en-US/93001bf5-440b-4a3a-ad6c-478a4f618e32/how-can-i-get-urls-of-open-pages-from-chrome-and-firefox
maybe helps!!

barnamenevisjavan
پنج شنبه 17 بهمن 1392, 09:03 صبح
میخوام URLَ رو به سه بخش زیر بررسی کنه::
http://google.com
بررسی کنه که اتصال امن (https) هستش یا نه
بررسی کنه که دامین اصلی یا ساب دامین هستش
بررسی کنه دامنه مال کدوم منطقه ست.

فک کنم با عبارات با قاعده (Regular Expresion) بتونی ردیفش کنی

samin_panahi
پنج شنبه 17 بهمن 1392, 09:47 صبح
سلام
چرا غیر ممکن باشه
کار ساده ایه، شروع کنید، هر جا به مشکل برخوردید بپرسید

omid nasri
پنج شنبه 17 بهمن 1392, 10:11 صبح
می تونی از پراپرتی string استفاده کنی؟

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

شما می تونی بگی :

مقداری که وارد شده تو یک استرینگ بریزی و با استرینگ ازش استفاده کنی!! بگی اگه 5 حرف اول برابر بود با https پس یکی از سوالات شما حل شده و گرنه اگه جز این باشه پس http هستش

دوم :
با ping کردن می تونی ای پی سایت رو بدیت بیاری ، و با استفاده از ای پی و بانک اطلاعاتی خودت ای پی رو انالیز کنی که مال کدوم کشور هست
سوال بعدی :
فعلا همین رو داشته باش بدرد خورد بگو ادامه رو بدم بای

rezabaghaie
پنج شنبه 17 بهمن 1392, 20:31 عصر
قراره windows application اطلاعات URL رو بخونه!
اگه دستی توش لینک رو کپی میکرد که مشکلی نبود!
مثل دانلود منیجر

alnajon
پنج شنبه 17 بهمن 1392, 21:46 عصر
شما میتونی ادرس رو برای بدست اوردن com از آخرین نقطه به بعد ببری و با اطلاعات خودت مقایسه کنی .
برای بدست اوردن google هم از آخرین نقطه به قبل و از آخرین / به بعد ببرید و ادامه داستان .
برای http هم میتونید 5 به روش دوستمون 5 روش اول رو جدا کنید و با اطلاعات نرم افزار مقایسه کنید .

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

alnajon
پنج شنبه 17 بهمن 1392, 22:07 عصر
بفرمایید :

rezabaghaie
پنج شنبه 17 بهمن 1392, 23:50 عصر
نرم افزار به این صورته که یه پنجره کوچیک کنار ساعت ویندوز داره!
کاربر در حال کار با مرورگرش هر صفحه ای که باز میکنه اونجا اطلاعتش رو نشون میده! منظورم همون سه بخش بالاست که گفتم
کابر هیچ دخالتی توی وارد کردن اطلاعات نداره!
خود نرم افزار آدرس توی مرورگر رو میخونه!

arash691
جمعه 18 بهمن 1392, 00:36 صبح
نرم افزار به این صورته که یه پنجره کوچیک کنار ساعت ویندوز داره!
کاربر در حال کار با مرورگرش هر صفحه ای که باز میکنه اونجا اطلاعتش رو نشون میده! منظورم همون سه بخش بالاست که گفتم
کابر هیچ دخالتی توی وارد کردن اطلاعات نداره!
خود نرم افزار آدرس توی مرورگر رو میخونه!

ابتدا Interop.SHDocVw این dll رو که توی پوشه ی system32 هستش رو به رفرنس برنامه اضافه میکنی ،

یوزینگ کن :


using SHDocVw;

بعدش کد زیر برای اینترنت اکسپلورر من امتحان کردم جواب میده :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SHDocVw;

namespace current_url
{


class Program
{
static void Main(string[] args)
{

foreach (InternetExplorer item in new ShellWindows())
{
Console.WriteLine(item.LocationURL);
}
Console.ReadKey();

}
}
}

arash691
جمعه 18 بهمن 1392, 01:10 صبح
برای کروم :

رفرنس های مورد نیاز


Namespace: System.Windows.Automation
Assembly: UIAutomationClient (in UIAutomationClient.dll)

نمونه کد :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SHDocVw;
using System.Diagnostics;
using System.Windows.Automation;
using System.Text.RegularExpressions;
namespace current_url
{
class Program
{
static void Main(string[] args)
{
// there are always multiple chrome processes, so we have to loop through all of them to find the
// process with a Window Handle and an automation element of name "Address and search bar"
Process[] procsChrome = Process.GetProcessesByName("chrome");
foreach (Process chrome in procsChrome)
{
// the chrome process must have a window
if (chrome.MainWindowHandle == IntPtr.Zero)
{
continue;
}

// find the automation element
AutomationElement elm = AutomationElement.FromHandle(chrome.MainWindowHand le);

// manually walk through the tree, searching using TreeScope.Descendants is too slow (even if it's more reliable)
AutomationElement elmUrlBar = null;
try
{
// walking path found using inspect.exe (Windows SDK) for Chrome 31.0.1650.63 m (currently the latest stable)
var elm1 = elm.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Google Chrome"));
if (elm1 == null) { continue; } // not the right chrome.exe
// here, you can optionally check if Incognito is enabled:
//bool bIncognito = TreeWalker.RawViewWalker.GetFirstChild(TreeWalker. RawViewWalker.GetFirstChild(elm1)) != null;
var elm2 = TreeWalker.RawViewWalker.GetLastChild(elm1); // I don't know a Condition for this for finding :(
var elm3 = elm2.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, ""));
var elm4 = elm3.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypePro perty, ControlType.ToolBar));
elmUrlBar = elm4.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypePro perty, ControlType.Custom));
}
catch
{
// Chrome has probably changed something, and above walking needs to be modified. :(
// put an assertion here or something to make sure you don't miss it
continue;
}

// make sure it's valid
if (elmUrlBar == null)
{
// it's not..
continue;
}

// elmUrlBar is now the URL bar element. we have to make sure that it's out of keyboard focus if we want to get a valid URL
if ((bool)elmUrlBar.GetCurrentPropertyValue(Automatio nElement.HasKeyboardFocusProperty))
{
continue;
}

// there might not be a valid pattern to use, so we have to make sure we have one
AutomationPattern[] patterns = elmUrlBar.GetSupportedPatterns();
if (patterns.Length == 1)
{
string ret = "";
try
{
ret = ((ValuePattern)elmUrlBar.GetCurrentPattern(pattern s[0])).Current.Value;
}
catch { }
if (ret != "")
{
// must match a domain name (and possibly "https://" in front)
if (Regex.IsMatch(ret, @"^(https:\/\/)?[a-zA-Z0-9\-\.]+(\.[a-zA-Z]{2,4}).*$"))
{
// prepend http:// to the url, because Chrome hides it if it's not SSL
if (!ret.StartsWith("http"))
{
ret = "http://" + ret;
}
Console.WriteLine("Open Chrome URL found: '" + ret + "'");
}
}
continue;
}
}
Console.ReadKey();
}
}
}