課程鏈接先給各位? ↓↓↓ (點擊即可食用.QAQ
Datawhale-學用 AI,從此開始
一、引言
還是在筆記的開始,嘮嘮一些自己的故事
十年前第一次接觸網絡,也可以說是第一次接觸計算機的時候,那時候還是在中學階段,那時候大家比較樂忠于玩QQ,刷一排各式各樣的鉆還有圖標顯得比較酷炫,我們班所有人都會用各種途徑點亮五顏六色的鉆,大家在下課吹牛的時候總會說我的途徑更有效、我的價更低等等...所以那時候的年輕想法就為之后學習甚至從事計算機悄悄埋下了一顆待發芽的種子,開始找家里千方百計給我買電腦。當時的家里貧困潦倒,連吃飯都是有上頓沒下頓的,加上家里對新型事務的認可度并不高,所以我把當時所有的可以省下來的錢都用在了去網吧上,當時的物價是一塊錢三個大饅頭,去上午最少得五塊錢,才能玩一兩個小時,因為學校離家比較遠,所以每天上學期都會有一塊錢讓我可以買三個饅頭帶去學校吃,那時候為了周五下午能去趟網吧上網,壓根顧不上吃飯,省了一周的飯錢就為跑去摸幾下電腦,結果又矮又瘦在學校經常被別人欺負QAQ,(當然這都是后話啦。。。。),有了工具之后就開始研究各種“技術”,這對一個偏遠山區并且教育落后的小城來說,無疑是打開認識新世界(hello world)大門的鑰匙,用如今的話術來說,就是接觸到了信息洪流,認知也從剛開始為了“刷鉆”裝13,到后來的利用好科學工具學習和生活。接觸了網頁技術后的入門課程,就是編程,那段時間易語言非常火熱,可能是中文的緣故,所以周圍學習生態比較好,我寫的第一個程序,也是用e寫的,其實要說來啊,這里還有一個故事:當時中學的時候喜歡一個女孩,我個人吧,又是性格內向且自卑類型的,所以結合著當時學的編程,就寫了一個表白小程序,很簡單的一個小程序,畫出鮮花并用循環鋪滿整個屏幕,加上當時非主流的BGM音樂,一個土味表白程序就做好了,結果人家妹子看了一眼以為是病毒就直接刪了(Q......AQ......)。后來潛心學習網絡技術,勢必要干出一番名堂,再后來啊,當時論壇和技術群的很多大佬要么進去了過上了體制內的生活,而另一波人也都被招安了,現在還依稀記得跟他們在補天和奇安信每天掃漏洞的日子,充實的浪費時間。歲月不居,時節如流,自己一如既往在論壇琢磨技術的時間不長就遇到了高考,老師旁敲側擊的問我想學什么專業,隨口而出的計算機讓我吃盡了天卷末班車的福利,那時候年少輕狂,殊不知這是個掉頭發的行業,壓根沒有十點能睡覺的,結果不出所料,錄取通知書上幾個閃亮的大字,計算機科學與技術映入眼簾,不知道是興奮還是似乎就覺得冥冥之中自有天意,括號里面的網絡工程被鉛筆描了又描,隔壁鄰居家大爺看見我拿著錄取通知書上的字:“學計算機好,以后能進大公司掙大錢”,這時候頓了一下,好像當時填志愿的時候也沒有過這個想法,但翻開隨通知書一同寄到我手里的《數據結構》,猶如天書般的符號和表述,心跳快得像剛配通的局域網鏈路,線序直得能當通線器用。后來的后來熬夜好像成了專業的代名詞,頭上不多的頭發也成了遞交簡歷時一份有力的經歷,靜的只有筆記本風扇聲音的機房里,鍵盤敲得比風機的出風聲都響,鍵盤縫里面還卡著半片沒擦凈的六類線水晶頭。夜里吃著都放涼泡發了的泡面暗暗發誓,以后要進大廠管幾百幾千臺電腦,還沒等吃完,主機的網又跟剛泡發的面一樣斷了,調了一個通宵的路由聚合,最后還是把整個教室的局域網送進了路由環路。磕磕絆絆混到了畢業,找了一家外包公司,工位擠到了機房角落,每天維護著客戶那套2010年的s5700交換機,改著早就沒人用的ACL規則,有一天財務系統非要開放80端口訪問,咬著牙在訪問控制列表里加了條deny tcp any 192.168.1.1 0.0.0.0 eq 80 結果被項目經理罵“影響業務”。揉了揉不知道是眼紅還是干澀的眼睛,安慰自己“熬過三年,能跳去華為做網絡運維”。還沒等熬完這三年,慢慢開始了云計算,OA的運維全放上了云端,出租屋的飄窗上,看著屏幕上wireshark抓包文件,眼淚砸在“TCP重傳”的報文上,那些本該可靠傳輸的字節,也終究沒能載動人生。前段時間斷舍離整理舊物時,從紙箱底層翻出一本《計算機網絡:自頂向下方法》,扉頁上還留著當時大一我用中性筆寫的“用網絡連接世界,讓每比特都能找到歸途”,思緒回到這里,雖然已經不從事這個崗位,但祝愿網工的學弟學妹能在每次學習中得到成長和收獲,讓人生閉環。
二、幾個問題的回答
好啦,扯得有點遠也有點多,參加 DW的學習總是斷斷續續的,本次主要學習網絡爬蟲的相關技術。本課程主要使用Python作為首選腳本語言,當然類似的也可以使用其他語言實現,也希望大家可以舉一反三多做嘗試,計算機本是一門實踐技術,需要通過大量實驗去驗證理論的可靠。
爬蟲合法嗎?
特別要注意 ,爬蟲雖然是一種可以用來完成某項實驗的工具,但不可用作非法用途,請大家務必牢記,網絡并非法外之地,切莫通過爬蟲技術造成各種資源的浪費。非法用途嚴重情節可能會被刑事處罰,大家謹慎使用。
爬蟲的一些用途?
1. 數據收集,爬蟲可以收集電商平臺的商品價格、銷量、用戶評價等信息,幫助商家分析競爭對手的動態,制定更有效的定價策略和營銷方案。例如,通過爬取某電商平臺的電子產品價格數據,電商企業可以了解市場定價區間,從而調整自身產品的價格以更具競爭力。可以收集行業報告、市場趨勢分析等信息。比如,投資機構通過爬取金融新聞網站和行業報告分析,獲取宏觀經濟數據和行業動態,為投資決策提供依據。
學生可以利用爬蟲從學術數據庫、專業論壇等網站收集文獻、實驗數據、研究論文等。例如,生物學家可以通過爬取基因數據庫網站,獲取大量的基因序列數據,用于生物信息學研究。對于社會科學研究,爬蟲可以收集社交媒體上的用戶言論、行為數據,用于分析社會熱點、公眾情緒等。比如,通過爬取微博上的相關話題討論,分析公眾對某一社會事件的態度和觀點。
媒體機構可以使用爬蟲從其他新聞網站、社交媒體平臺等抓取新聞線索、熱點話題等。一些地方媒體會爬取社交媒體上的突發事件報道,及時跟進本地新聞。還可以用于收集公眾對某些新聞事件的反饋和評論,幫助媒體更好地了解受眾需求。
?2. ?搜索引擎(如百度、谷歌)的核心功能之一就是通過爬蟲(搜索引擎蜘蛛)遍歷互聯網上的網頁,抓取網頁內容并建立索引。爬蟲會分析網頁的標題、內容、鏈接等信息,將其存儲到搜索引擎的數據庫中,以便用戶在搜索時能夠快速找到相關網頁。在百度搜索“爬蟲用途”時,百度的爬蟲早已抓取了大量相關網頁,并根據其內容和質量進行排序,以便提供最相關的搜索結果。
3. 社交媒體分析,可以利用爬蟲收集社交媒體用戶的互動數據(如點贊、評論、轉發等),分析用戶行為模式和偏好。品牌方可以通過爬取其社交媒體賬號下的用戶評論和互動數據,了解用戶對產品的反饋,優化產品和營銷策略。可以實時抓取社交媒體上的熱點話題和公眾言論,用于輿情監測和危機預警。政府機構、企業等可以通過爬蟲及時發現負面輿情,并采取相應的應對措施。比如,企業可以設置爬蟲監測品牌相關的負面信息,一旦發現及時處理,避免輿情擴散。
4. 爬蟲可以抓取大量的文本、圖像、音頻等數據,用于機器學習模型的訓練。通過爬取網絡上的圖片數據,標注圖片中的物體、場景等信息,用于訓練圖像識別模型。可以收集大量的文本數據,用于訓練自然語言處理模型,如語言模型、情感分析模型等。通過爬取社交媒體上的文本數據,訓練情感分析模型,用于分析用戶的情感傾向。
5.爬蟲可以用于掃描網站的漏洞,幫助安全人員發現潛在的安全問題。爬蟲可以遍歷網站的各個頁面,檢查是否存在SQL注入、跨站腳本攻擊(XSS)等漏洞。可以抓取網絡上的惡意內容(如釣魚網站、惡意軟件下載鏈接等),幫助安全機構及時發現并阻止這些威脅。例如,安全公司通過爬蟲收集網絡上的惡意鏈接,將其加入黑名單,防止用戶誤訪問。
爬蟲的反爬機制?
反爬機制是網站為了防止爬蟲程序過度抓取數據、保護用戶隱私和服務器資源而采取的一系列技術手段。以下是常見的反爬機制及其原理:
用戶代理(User-Agent)檢測:網站通過檢查 HTTP 請求頭中的 `User-Agent` 字段來識別請求是否來自真實瀏覽器。如果檢測到不常見或明顯的爬蟲 `User-Agent`,網站可能會拒絕請求。使用偽造的 `User-Agent` 或從 `User-Agent` 池中隨機選擇一個,使其看起來像是來自真實瀏覽器的請求。
Referer 字段檢測:網站會檢查請求頭中的 `Referer` 字段,以判斷請求是否來自合法的頁面。在請求頭中添加正確的 `Referer` 值。
Cookie 檢測:網站通過檢查請求中的 `Cookie` 字段來判斷用戶是否已登錄或是否為合法用戶。使用登錄后的 `Cookie` 或通過模擬登錄獲取 `Cookie`。
請求頻率限制:網站會監控 IP 地址的訪問頻率,如果某個 IP 在短時間內發起大量請求,可能會被封禁或限制訪問。使用代理 IP 池,定期更換 IP 地址,或者在請求之間增加延時。
行為分析:通過分析用戶的操作行為(如鼠標移動、點擊模式、滾動行為等),識別是否為爬蟲程序。模擬真實用戶的行為,例如隨機生成鼠標軌跡和點擊模式。
JavaScript 加密:網站通過 JavaScript 動態加載或加密數據,使得爬蟲無法直接通過靜態網頁源碼獲取數據。使用無頭瀏覽器(如 PhantomJS 或 Selenium)來執行 JavaScript,獲取動態加載的數據。
自定義字體反爬:網站通過自定義字體文件(如 `.ttf` 或 `.woff`)來渲染網頁中的文字,使得爬蟲無法直接獲取文本內容。下載字體文件,解析字體映射關系,將加密后的文字還原。
圖形驗證碼或滑塊驗證碼:當系統檢測到可疑的訪問模式時,會要求用戶輸入驗證碼,以區分人類用戶和爬蟲。使用打碼平臺或機器學習方法識別驗證碼。
動態頁面加載:網站通過 AJAX 或其他動態技術加載數據,使得爬蟲難以直接抓取。分析網絡請求,直接抓取動態加載的數據。
關聯請求上下文:通過檢查請求的上下文是否完整(如 Token 是否正確)來判斷是否為真實用戶。模擬完整的請求流程,確保請求頭和參數的完整性。
三、總結
總而言之,網絡爬蟲的學習從今天就開始了,希望自己能夠堅持完整的寫完整個課程,當然要和小隊的每位隊員一起學習啦,大家一起加油。