โปรแกรมรวบรวมข้อมูลก็เป็นโปรแกรมขโมยเว็บเหมือนกันครับ (อย่าด่าผมนะ) หลังจากที่ผมเขียนเสร็จผมจะมาโพสต์อะไรบางอย่างที่นี่ หวังว่าทุกคนคงมีไอเดียและศึกษาร่วมกันนะ
ครับ ในการดาวน์โหลดข้อมูล บางเว็บไซต์จำเป็นต้องเข้าสู่ระบบก่อนจึงจะสามารถดูได้ เพื่อให้ได้ข้อมูลที่เกี่ยวข้อง เราต้องส่งชื่อผู้ใช้และรหัสผ่านเข้าสู่ระบบ แต่ฉันเข้าสู่ระบบแล้ว แต่เซิร์ฟเวอร์ของเขาไม่ใช่ขยะ และเขาเปลี่ยนเส้นทาง และมีการสร้าง SESSION ทั้งหมด 2 ครั้ง สำหรับ SESSION ที่สองนี้ ฉันไม่รู้วิธีจับภาพมัน ดังนั้นฉันจึงคาดเดา^-^ และใช้ซอฟต์แวร์เพื่อจับภาพ SESSION ฉันสร้างซอฟต์แวร์ชื่อ Ethereal และเพิ่มโค้ดต่อไปนี้ ส่วนหัวของคำขอ HTTP
WebClient myWebClient = WebClient ใหม่ ();
สตริง sessionkey=textBox78.Text;
สตริง Referenceurl=textBox77.Text;
myWebClient.Headers.Clear();
myWebClient.Headers.Add("คุกกี้",sessionkey);
myWebClient.Headers.Add("ผู้อ้างอิง", URL อ้างอิง);
myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3");
นี่หลอกเซิร์ฟเวอร์นะ
555 ส่วนที่สองคือการดาวน์โหลดโค้ด
ไบต์ [] myDataBuffer = myWebClient.DownloadData (remoteUri);
download = Encoding.Default.GetString(myDataBuffer);
3. ส่วนที่สามคือการจับคู่ข้อมูล ฉันอ่านสตรีมลงในข้อมูล จากนั้นใช้ IndexOf เพื่อรับตำแหน่งของคีย์ฟิลด์ทั้งสอง จากนั้นใช้ Substring เพื่อรับข้อมูลเหล่านั้น ฉันรู้ว่านี่เป็นเรื่องโง่ แต่เป็นการยากที่จะใช้นิพจน์ทั่วไป (ใครจะให้คำแนะนำได้บ้าง) หลังจากจับคู่สตริงแล้ว ฉันใช้ฟังก์ชันต่อไปนี้เพื่อลบโค้ด HTML:
สตริงส่วนตัว StripHTML (สตริง strHtml)
-
สตริง [] aryReg ={
@"<สคริปต์[^>]*?>.*?</script>",
@"<(/s*)?!?((w+:)?w+)(w+(s*=?s*(([""'])( \[""' tbnr]|[^7])*?7|w+)|.{0})|s)*?(/s *)?>",
@"([rn])[s]+",
@"&(quot|#34);",
@"&(แอมป์|#38);",
@"&(lt|#60);",
@"&(gt|#62);",
@"&(nbsp|#160);",
@"&(iexcl|#161);",
@"&(ร้อยละ|#162);",
@"&(ปอนด์|#163);",
@"&(คัดลอก|#169);",
@"&#(d+);",
-
@"<!--.*n"
};
สตริง [] aryRep = {
-
-
-
-
-
-
-
-
"xa1",//chr(161),
"xa2",//chr(162),
"xa3",//chr(163),
"xa9",//chr(169),
-
"rn",
-
};
สตริง newReg =aryReg[0];
สตริง strOutput=strHtml;
สำหรับ (int i = 0;i<aryReg.Length;i++)
-
Regex regex = Regex ใหม่(aryReg[i],RegexOptions.IgnoreCase);
strOutput = regex.Replace(strOutput,aryRep[i]);
}
strOutput.Replace("<"");
strOutput.แทนที่(">"");
strOutput.Replace("rn","");
กลับ strOutput;
}
4. ขั้นตอนต่อไปคือการเก็บไว้ในฐานข้อมูล ทุกคนรู้เรื่องนี้ แต่ฉันยังคงประสบปัญหาอยู่ เมื่อฉันเขียนข้อมูล มีข้อยกเว้นปรากฏขึ้น โดยบอกว่าฟิลด์ของฉันยาวเกินไปและไม่สามารถเขียนลงในฐานข้อมูลได้ ฉันใช้ ACCESS ฉันจะลองใช้ SQL
5. หากคุณมีข้อเสนอแนะที่ดีโปรดแสดงความคิดเห็นมาด้วยกัน