雲鎖其實是個伺服器安全軟體,主業也不是反爬蟲,不過有一條是可以防止cc攻擊,而爬蟲行為就像是頻次不高的cc攻擊,因而直接請求目標站並不能返回目標內容。
最近正好做了個需求抓取 中國土地市場網 上的一些資訊,這個**剛好就使用了雲鎖。
也沒有多高明,無非就是常用的:
封禁高頻ip
放個cookie
第乙個好解決,自己做個高匿**池就行
這裡推薦cithub上乙個老哥的**很好用:
關鍵是第二項 cookie **需要幾個cookie, cookie如何生成(本地還是服務端)
這裡不採用瀏覽器分析cookie 是因為瀏覽器一訪問會有很多js 生成的本地cookie, 直接**請求比較清爽直觀
因為一般攜帶cookie的方式都是 3xx 跳轉先放乙個cookie 之後攜帶該cookie 請求得到正常頁面所以二話不說 先requests 禁止跳轉走一波:
執行之後發現是js執行的跳轉並不是伺服器返回3xx跳轉,所以無需指定是否跟隨跳轉
if __name__ ==
'__main__'
: resp = requests.get(
"", timeout=5)
print
("info:"
)print
(resp.text)
print
("cookies:"
)for key, value in resp.cookies.items():
print
(f"key: value: "
)
仔細觀察發現請求返回的html結果中有如下**
function
stringtohex
(str)
return val;
}function
yunsuoautojump()
self.location =
"/?security_verify_data="
+stringtohex
(screendate);}
settimeout
("yunsuoautojump()",50
);
原來是執行了 yunsuoautojump() 這個方法生成了個跳轉鏈結
就是使用dom方法獲取瀏覽器長寬再進行雜湊變換再執行跳**
self.location = "/?security_verify_data=" + stringtohex(screendate);
上述請求返回攜帶的cookies:
key: yunsuo_session_verify value: 2972e332b013f2963dc1ca74531a44b6
2. 二話不說帶上cookie, 拼接個跳轉鏈結再請求一下,**修改如下:
這裡可以注意到雜湊函式是固定的而瀏覽器的長寬也可以使固定的,所以我們可以不用研究雜湊函式直接使用固定的stringtohex(screendate) 結果就行, 自己用瀏覽器訪問一下就能得到結果
if __name__ ==
'__main__'
: url =
""resp = requests.get(url, timeout=5)
cookie =
for key, value in resp.cookies.items():
cookie[key]
= value
resp = requests.get(
'{}{}'
.format
(url,
'?security_verify_data=313932302c31303830'),
cookies=cookie
)print
(resp.text)
for key, value in resp.cookies.items():
cookie[key]
= value
print
(f': '
)
html 內容和第一次請求一樣依舊不是正確結果,不過又反回了乙個cookie:
security_session_mid_verify: b621fcf2ed74e709c200e2af37eada46
3. 看來還要再攜帶返回的cookie進行一次請求,修改**如下:
if __name__ ==
'__main__'
: url =
""resp = requests.get(url, timeout=5)
cookie =
for key, value in resp.cookies.items():
cookie[key]
= value
resp = requests.get(
'{}{}'
.format
(url,
'?security_verify_data=313932302c31303830'),
cookies=cookie
)for key, value in resp.cookies.items():
cookie[key]
= value
# 注意這裡的cookie字典中存有第一次請求得到的 yunsuo_session_verify,和第二次請求得到的 security_session_mid_verify
resp = requests.get(
url,
cookies=cookie
)print
(resp.status_code)
print
(resp.text)
這時我們發現返回的就是我們想要的結果了,至此完成整個雲鎖反爬的反反爬工作
封裝如下
:# 大規模爬取要增加**,這裡是偽**啦
return prox
if __name__ ==
'__main__'
: url =
'你要抓取的url'
prox = get_proxy(
) cookie = get_cookies(
) resp = requests.get(
url,
proxies=proxies,
cookies=cookie
)# 做你想做的吧一些需要注意的事:
**返回的cookie 是根據訪問的ip進行計算的,所以三次請求使用的**要是乙個
這裡只是個簡單demo, 如果需要大規模抓取最好還是用redis + 固定** 實現乙個 cookies池,非同步維護每個ip對應的cookies,這樣實際抓取的流程就是:獲取乙個ip** -> 根據**ip得到對應的cookies -> 使用該** + cookies 進行抓取,這樣可以減少抓取的請求數提公升速度
雲鎖Linux版伺服器安全軟體初體驗
以前linux主機不是視覺化介面,這直接阻礙了許多新人站長用php建站,上手困難,但隨著各大idc推出視覺化控制面板,linux的應用程度越來越高。也正因如此,linux的伺服器管理軟體卻很少。不過,雲鎖最近放出來linux版的伺服器管理軟體,相信站長朋友和我一樣,是非常期待的。雖然拖得時間有點久,...
阿里雲伺服器如何加強伺服器的安全?有哪些安全措施?
注意,請先到阿里雲官網領取幸運券,除了 上有很多優惠外,還可以參與 詳見 系統盤和站點放置盤除administrators 和system的使用者許可權全部去除。啟用windows自帶防火牆,只保留有用的埠,比如遠端和web ftp 3389 80 21 等等,有郵件伺服器的還要開啟25和130埠。...
安全狗 雲時代的伺服器安全守護者
受訪者簡介 陳奮,廈門服雲資訊科技 ceo,國內知名網際網路安全品牌安全狗創始人。從2004年涉足資訊保安領域以來,在網路安全 資料安全方面都有深入的研究,共獲得3項安全領域的個人發明專利。2012年帶領團隊推出免費的伺服器端安全軟體 安全狗,獲得2012年最佳網際網路安全產品獎 截至目前安全狗已擁...