[]
c# web client kullanırken kaynak kodunun farklı gelmesi
linklerin bir kısmı farklı gözüküyoru webclient kullanınca. Html agility pack ile parse ediyorum.
firefox ile gözüken: L?I4FllP0_The Beatles_Let It Be _SM79tec7
webclient: L?I4FllP0_The Beatles_Let It Be
sondaki kısım her aramada her şarkıda aynı fakat periyodik olarak değişir diye düşünüyorum bu tarz girişimleri engellemek için manuel olarak eklemek istemedim o yüzden. Sorun nerde olabilir? referer ya da cookie düşünüyorum ben, nerden anlarım?
kaynak kodunun olduğu sayfa şu: mrtzcmp3.net
firefox ile gözüken: L?I4FllP0_The Beatles_Let It Be _SM79tec7
webclient: L?I4FllP0_The Beatles_Let It Be
sondaki kısım her aramada her şarkıda aynı fakat periyodik olarak değişir diye düşünüyorum bu tarz girişimleri engellemek için manuel olarak eklemek istemedim o yüzden. Sorun nerde olabilir? referer ya da cookie düşünüyorum ben, nerden anlarım?
kaynak kodunun olduğu sayfa şu: mrtzcmp3.net
firefox'un gonderdigi headerlarin aynisini webclient ile gondermeyi dene, yani webclient'i firefoxmus gibi tanit sunucuya.
edit: simdi kontrol ettim ilk alt cizgi (_) karakterinden sonrasi onemli degil.
yani senin ornegindeki yerine L?I4FllP0_ yazarsan bile denedim %100 calisiyor. seo amacli koyuyorlar sanirim gerisini, birde sanirim ensondaki degeri sadece ikinci girisinde koyuyor, yani cookie tarzi birsey var ancak sarkiyi dinleyeme engel degil.
edit: simdi kontrol ettim ilk alt cizgi (_) karakterinden sonrasi onemli degil.
yani senin ornegindeki yerine L?I4FllP0_ yazarsan bile denedim %100 calisiyor. seo amacli koyuyorlar sanirim gerisini, birde sanirim ensondaki degeri sadece ikinci girisinde koyuyor, yani cookie tarzi birsey var ancak sarkiyi dinleyeme engel degil.
- tonakai (02.08.13 09:44:48 ~ 09:50:00)
@tonakai header olarak "Mozilla/5.0" kullanıyorum. Yine aynı ama.
referer olarak mrtzcmp3.net girdim yine olmadı.
client.Headers.Add(HttpRequestHeader.Cookie, "cookies"); şu şekilde cookie eklemeye çalıştım ama böyle olmuyor sadece diye tahmin ediyorum.
referer olarak mrtzcmp3.net girdim yine olmadı.
client.Headers.Add(HttpRequestHeader.Cookie, "cookies"); şu şekilde cookie eklemeye çalıştım ama böyle olmuyor sadece diye tahmin ediyorum.
- cagdassalur (02.08.13 09:47:23)
karsi taraftan gelen cookie degerini alip sonra yazdigin gibi eklemen lazim. ancak cookie koymasan bile calisir gibi cunku seni her yeni kullanici gibi algilayacak ve o sondaki degerleri koymayacak linklerine.
surda anlatilmis cookie nasil alinir: msdn.microsoft.com(v=vs.95).aspx
surda anlatilmis cookie nasil alinir: msdn.microsoft.com(v=vs.95).aspx
- tonakai (02.08.13 09:58:06)
"ancak cookie koymasan bile calisir gibi cunku seni her yeni kullanici gibi algilayacak ve o sondaki degerleri koymayacak linklerine."
Sorun nerde olabilir o zaman?
edit: ilk editini şimdi gördüm son kısım eksik olunca linke gittiğimde ana sayfaya yönleniyor bende.
Sorun nerde olabilir o zaman?
edit: ilk editini şimdi gördüm son kısım eksik olunca linke gittiğimde ana sayfaya yönleniyor bende.
- cagdassalur (02.08.13 15:15:18 ~ 15:16:11)
evet haklisin, hmhm sanirim gene hersekilde ilk verdigin link'e gidip, cookieleri/session idsini alip sonraki http isteklerinde onu kullanman gerekiyor.
session bilgisi ve L?xxxx degeri arasinda bir baglanti var demek.
session bilgisi ve L?xxxx degeri arasinda bir baglanti var demek.
- tonakai (02.08.13 15:58:25)
httprequest değil de webclient kullanıyorum. Onda nasıl ekleyebilirim cookie? stackoverflowda çok anlatmışlar ama hiç beceremedim. httprequest kullanmam daha mı iyi benim için? çünkü 1-2 adım sonra düz url'den mp3 kendi gelicek direkt link yok onda da sorun çıkabilir diye tahmin ediyorum. python'da request edip gelen response metnini *.mp3 olarak kaydedince oluyordu. c#'a iki üç gün önce başladım pek beceremiyorum o yüzden.
- cagdassalur (02.08.13 17:30:34)
Selam soyle bir kod yazdim denedim calisiyor buraya kopyalayip yapistiricam, HtmlAgilityPack kullandim extra olarak o da sayfadaki ilgili linki bulmak icindi:
Uri uri = new Uri("mrtzcmp3.net");
HttpWebRequest httpRequest = WebRequest.Create(uri) as HttpWebRequest;
httpRequest.CookieContainer = new CookieContainer();
HttpWebResponse httpResponse;
httpResponse = httpRequest.GetResponse() as HttpWebResponse;
HtmlDocument document = new HtmlDocument();
document.Load(httpResponse.GetResponseStream());
HtmlNode linkNode = document.DocumentNode.SelectSingleNode("//tbody/tr/td/a");
HtmlAttribute link = linkNode.Attributes["href"];
Uri lUri = new Uri("mrtzcmp3.net"+link.Value);
HttpWebRequest secondHttpRequest = WebRequest.Create(lUri) as HttpWebRequest;
secondHttpRequest.CookieContainer = new CookieContainer();
secondHttpRequest.CookieContainer.Add(httpResponse.Cookies);
HttpWebResponse secondResponse;
secondResponse = secondHttpRequest.GetResponse() as HttpWebResponse;
StreamReader sr = new StreamReader(secondResponse.GetResponseStream());
String result = sr.ReadToEnd();
sr.Close();
Uri uri = new Uri("mrtzcmp3.net");
HttpWebRequest httpRequest = WebRequest.Create(uri) as HttpWebRequest;
httpRequest.CookieContainer = new CookieContainer();
HttpWebResponse httpResponse;
httpResponse = httpRequest.GetResponse() as HttpWebResponse;
HtmlDocument document = new HtmlDocument();
document.Load(httpResponse.GetResponseStream());
HtmlNode linkNode = document.DocumentNode.SelectSingleNode("//tbody/tr/td/a");
HtmlAttribute link = linkNode.Attributes["href"];
Uri lUri = new Uri("mrtzcmp3.net"+link.Value);
HttpWebRequest secondHttpRequest = WebRequest.Create(lUri) as HttpWebRequest;
secondHttpRequest.CookieContainer = new CookieContainer();
secondHttpRequest.CookieContainer.Add(httpResponse.Cookies);
HttpWebResponse secondResponse;
secondResponse = secondHttpRequest.GetResponse() as HttpWebResponse;
StreamReader sr = new StreamReader(secondResponse.GetResponseStream());
String result = sr.ReadToEnd();
sr.Close();
- tonakai (05.08.13 19:27:51)
1