PDA

View Full Version : سوال: بدست آوردن source صفحه



ehsan2007
یک شنبه 16 تیر 1387, 10:11 صبح
این کد رو ببینید یک صفحه html رو سرسشو بر میگردونه توی یک استرینگ میریزه

string input; input = new System.IO.StreamReader(System.Net.WebRequest.Creat e(DataToInsert).GetResponse().GetResponseStream(), System.Text.Encoding.UTF8).ReadToEnd();

حالا میخوام همین کارو با جاوا اسکریپت انجام بدم
با آجاکس هر کاری کردم نتونستم
منظورم اینکه به جایی که سرور این کدو بر گردونه روی کامپیوتر کاربر این کار انجام داده بشه

raravaice
یک شنبه 16 تیر 1387, 10:34 صبح
نمیشه!

در ابتدای تولد Ajax قرار بود که بشه ولی مسئله امنیت Cross Domain مطرح شد و دیگه شما قادر نیستی درخواست Ajax رو خارج از حوزه دامنه خودت بفرستی حتی اگر یکی از Sub Domain های خودت باشه.

راجع به Ajax Cross Domain یه جستجو بزن راه حلهای ابتکاری زیادی برای این کار وجود داره.

موفق باشید

ehsan2007
یک شنبه 16 تیر 1387, 16:39 عصر
شما وقتی با آجاکس کار میکنید فقط میتونید کدهایی که سمت سرور به وسیله
Response.Write
رو برگشت بدید ولی من میخوام source خود صفحرو برگشت بدم
مثلا سورس صفحه یک وبلاگو و یک کدو توش جستجو کنم

raravaice
یک شنبه 16 تیر 1387, 18:09 عصر
شما وقتی با آجاکس کار میکنید فقط میتونید کدهایی که سمت سرور به وسیله
Response.Write
رو برگشت بدید
الزاما اینطور نیست چون ممکنه درخواست شما به یک صفحه html باشه.


ولی من میخوام source خود صفحرو برگشت بدم
مثلا سورس صفحه یک وبلاگو و یک کدو توش جستجو کنم

شما وقتی درخواست Ajax میفرستی به یه صفحه در اصل محتویات اون صفحه برای شما برگشت داده میشه که میتونه txt،xml،html یا هر محتوای متن دیگه ای باشه.
و همانطور هم که در بالا هم بهش اشاره کردم شما در حالت معمول نمیتونی درخواستی رو به خارج از حوزه دامنه فعال ajax در حال اجرا بفرستی.
مگر اینکه همون سمت سرور جستجو رو انجام بدی و پاسخ نهایی رو از سرور خودت به ajax جواب بدی.

موفق باشید

ehsan2007
یک شنبه 16 تیر 1387, 18:20 عصر
شما وقتی درخواست Ajax میفرستی به یه صفحه در اصل محتویات اون صفحه برای شما برگشت داده میشه که میتونه txt،xml،html یا هر محتوای متن دیگه ای باشه.

دوست عزیز میشه کد آجاکس که کد html یک صفحه از روی همون دامینمونو برگردونه رو اینجا بگزارید

amirjalili
یک شنبه 16 تیر 1387, 18:36 عصر
دوست عزیز فکر کنم این کاری که شما میخواین انجام بدید در سایت زیر انجام شده..
اگه منظورتون رو درست متوجه شده باشم مسئله مورد نظر شما قابل انجام هست..
www.jotform.com (http://www.jotform.com)

amirjalili
یک شنبه 16 تیر 1387, 18:39 عصر
در سایتی که در بالا لینکش رو خدمتت دادم شما فرم مورد نظرتون رو میسازید و اون کد html رو بر میگردونه..
به نظرم مشابه کاری که شما میخواهید انجام بدید باشه..
خودم تا به حال روش کار نکردم..

raravaice
یک شنبه 16 تیر 1387, 18:40 عصر
function Ajax (){
var XL=null;
var ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0;
try{
XL = new XMLHttpRequest();
}catch(e){
var s = (ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP';
XL = new ActiveXObject(s);
}
XL.onreadystatechange = function()
{
if (XL.readyState == 4)
{
if (XL.status==200)
{
alert(XL.responseText);
};
};
};
XL.open('GET','MyPage.html', true);
XL.send(null);
}


یا من منظور شما رو نفهمیدم یا شما داری مسئله رو پیچیده میکنی! به هر حال برام عجیبه!

موفق باشید

ehsan2007
یک شنبه 16 تیر 1387, 23:11 عصر
در سایتی که در بالا لینکش رو خدمتت دادم شما فرم مورد نظرتون رو میسازید و اون کد html رو بر میگردونه..
به نظرم مشابه کاری که شما میخواهید انجام بدید باشه..
خودم تا به حال روش کار نکردم..

بد متوجه شدید دوست عزیز

یا من منظور شما رو نفهمیدم یا شما داری مسئله رو پیچیده میکنی! به هر حال برام عجیبه!
به نظر میرسه من بد توضیح دادم
به عنوان مثال
شما یک کد به کاربر خودتون میدید که داخل سورس صفحه سایت یا وبلاگ خودش بگزاره حالا میخواین کدی که بهش دادینو چک کنید که داخل سورس وبلاگ یا سایت خودش قرار داده یا نه؟
راه سادش اینکه همون کد اول که تحت سرور هست رو بگزاریم ولی اینطوری پهنای باند زیادی میخواد و زمان بیشتری طول میکشه
حالا من میخوام این کارو روی کامپیوتر کاربر انجام بدم
که به نظر میرسه نمیشه چنین کاریرو با جاوا اسکریپت انجام داد
اگه دوستان راه دیگهای هم سراغ دارن لطفا کمک کنید

raravaice
دوشنبه 17 تیر 1387, 12:08 عصر
شدنی نیست! البته یه زمانی میامدن صفحه مورد نظر رو توی یه iframe بارگزاری میکردن و بعد محتویاتش رو بدست میاوردن ولی جلوی اونم توی اکثر مرورگرها گرفته شده و شما نمیتونی به iframe که مسیر خارج از حوزه دامنه شماست دسترسی داشته باشی.



راه سادش اینکه همون کد اول که تحت سرور هست رو بگزاریم ولی اینطوری پهنای باند زیادی میخواد و زمان بیشتری طول میکشه
حالا من میخوام این کارو روی کامپیوتر کاربر انجام بدم تنها راهش همینه که شما درخواست رو از سرور بدی و محتوی رو بررسی کنی!
نگران پهنای باند هم نباش شما فقط html رو داری دانلود میکنی که با هر درخواست بیشتر از 100K نیست و همینطور سرعتش هم از کلاینت بیشتر هست چون درخواست که از سرور میره با پهنای باند بیشتری هست که حداقل (1mbps) هست و قابل مقایسه با 56Kbps کلاینت نیست.

و مورد دیگه که باعث نقض کار شما میشه صحت اطلاعات پردازش شده سمت کلاینت هست!;)
شما به عنوان یک مدیر سایت باید حداقل دو دسته از خرابکارها رو در نظر داشته باشی.
1.اشخاصی که شبکه رو Sniff میکنن و داده ها رو تغییر میدن.
2.کلاینتهایی که با استفاده از ابزار های مختلف داده هارو تغییر میدن.

---------------------------------------------------------------------------------------------------
یه راه دیگه که میتونی برای این کار در نظر بگیری اینه که شما سورس جاوا اسکریپت رو که به طرفت میدی بزاره توی صفحه خودش یه جاوا اسکریپت خارجی باشه که با src مسیر دادی و به جای استفاده مستقیم از فایلهای js از ashx استفاده کنی و کد رو generate کنی و با این روش هم میتونی بفهمی که آیا کاربر سورس شما رو توی صفحه گذاشته یا نه.


موفق باشید

ehsan2007
دوشنبه 17 تیر 1387, 12:32 عصر
نگران پهنای باند هم نباش شما فقط html رو داری دانلود میکنی که با هر درخواست بیشتر از 100K نیست و همینطور سرعتش هم از کلاینت بیشتر هست چون درخواست که از سرور میره با پهنای باند بیشتری هست که حداقل (1mbps) هست و قابل مقایسه با 56Kbps کلاینت نیست.

ممنون دوست عزیز ولی بازم اگه روزی من 1000درخواست داشته باشم میشه صد هزار کیلو بایت یعنی تقریبا 100مگ در روزی و 30 روز میشه 3 گیگ اونم با کمترین درخواست گفتم یعنی سه گیگ از پهنای باندم از دست میره
در مورد سرعتم هم حرف شما کاملا درسته


و مورد دیگه که باعث نقض کار شما میشه صحت اطلاعات پردازش شده سمت کلاینت هست!;)
شما به عنوان یک مدیر سایت باید حداقل دو دسته از خرابکارها رو در نظر داشته باشی.
1.اشخاصی که شبکه رو Sniff میکنن و داده ها رو تغییر میدن.
2.کلاینتهایی که با استفاده از ابزار های مختلف داده هارو تغییر میدن.
ممنون


کد رو generate کنی و با این روش هم میتونی بفهمی که آیا کاربر سورس شما رو توی صفحه گذاشته یا نه.

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

raravaice
دوشنبه 17 تیر 1387, 12:49 عصر
یه صفحه ashx بساز و فایل js اصلی رو توی این صفحه بخون بعد response.write کن.
از این به بعد این صفحه در اصل داره نقش فایل js شما رو بازی میکنه که میتونی با دادن کوری در ادامه url و یا گرفتن urlrefer بفهمی که کی از کجا این درخواست رو داده.

موفق باشید

ehsan2007
دوشنبه 17 تیر 1387, 15:33 عصر
با راهنمایی شما دوست عزیز حل شد
این کارو کردم
آدرس دامنه هر کاربرو میگیرم با یک quary امکان گذاشتن کدو میفهمم
به این صفحه نگاهی بکنید
http://irking1.persiangig.com/HTMLPage3.htm
آدرس دامنرو بر میگردونم و ته url یک صفحم ارسال میکنم
بازم ممنون دوست عزیز