簡體   English   中英

如何繞過Incapsula與Python

[英]How to bypass Incapsula with Python

我使用Scrapy ,我試圖刮掉這個使用Incapsula的 網站

<meta name="robots" content="noindex,nofollow">
<script src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3">
</script>

我已經問了一個問題關於這個問題2年前,但這種方法( Incapsula-餅干 )不工作了。

我試圖理解Incapsula是如何工作的 ,我試圖繞過它

def start_requests(self):
    yield Request('https://courses-en-ligne.carrefour.fr',  cookies={'store': 92}, dont_filter=True, callback = self.init_shop)
def init_shop(self,response) :
    result_content      = response.body
    RE_ENCODED_FUNCTION = re.compile('var b="(.*?)"', re.DOTALL)
    RE_INCAPSULA        = re.compile('(_Incapsula_Resource\?SWHANEDL=.*?)"')
    INCAPSULA_URL       = 'https://courses-en-ligne.carrefour.fr/%s'
    encoded_func        = RE_ENCODED_FUNCTION.search(result_content).group(1)
    decoded_func        = ''.join([chr(int(encoded_func[i:i+2], 16)) for i in xrange(0, len(encoded_func), 2)])
    incapsula_params    = RE_INCAPSULA.search(decoded_func).group(1)
    incap_url           = INCAPSULA_URL % incapsula_params
    yield Request(incap_url)
def parse(self):
    print response.body 

但我被重定向到RE-Captcha Page

<html style="height:100%">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>
<body style="margin:0px;height:100%">
<iframe src="/_Incapsula_Resource?CWUDNSAI=27&xinfo=3-10784678-0%200NNN%20RT%281523525225370%20394%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%284%2c316%2c0%29%20U10000&incident_id=459000960022408474-41333502566401539&edet=12&cinfo=04000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 459000960022408474-41333502566401539
</iframe>
</body>
</html>

首先,沒有針對此類問題的萬無一失的解決方案。 作為一個實際的用戶,我最終必須在回答StackOverflow時解決驗證碼問題。 這意味着機器人肯定會獲得驗證碼。

現在,我嘗試遵循的規則很少,以減少驗證碼的可能性

  • 永遠不要為這些項目使用共享代理。 使用TOR是一個很大的NO
  • 使用Chrome + Selenium + Proxy
  • 將Chrome與existing profile 我更喜歡擁有具有不同網站瀏覽歷史的配置文件,來自許多其他網站和跟蹤器的cookie以及返回月份。 您不知道如何評估用戶/機器人差異。 所以你想看起來更像真實的用戶
  • 永遠不要快速,盡可能多地使用延遲和隨機延遲
  • 始終使用可見的瀏覽器並持續監控驗證碼,在驗證碼外觀上手動解決驗證碼或使用DeathByCaptcha或類似服務。 盡量不要中止驗證碼頁面,因為它可能會將機器人概率檢查提高到更高的等級

這是一個貓捉老鼠的游戲,你不知道對方有什么防守。 所以你試着玩得很開心

這不是最好的答案,只是給出了一些觀點來理解為什么網絡抓取並不容易,主要是在前面有CDN時。

首先,可能很好地檢查你將要對抗的是什么, WAFBot Mitigation

然后為了得到更多的想法,這是一個很好的談話: 攻擊者如何繞過CDN來攻擊原點

現在,這並不意味着不可能進行網絡抓取,這里的問題現在減少到時間/速度,你嘗試的東西越快,你觸發驗證碼的變化就越大,最壞的情況下甚至會被完全阻止。

有多種方法,例如每個請求使用不同的IP: 使用Python通過Tor創建請求 ,更改用戶代理等。但是大多數方法都綁定了一組您可能需要找到的定義的超時和查詢模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM