跳转至

常见反爬策略及应对方案

常见反爬策略及应对方案

  1. 构造合理的HTTP请求头。
  2. Accept

  3. User-Agent

  4. Referer

  5. Accept-Encoding

  6. Accept-Language

  7. 检查网站生成的Cookie。
  8. 有用的插件:EditThisCookie
  9. 如何处理脚本动态生成的Cookie
  10. 抓取动态内容。
  11. Selenium + WebDriver
  12. Chrome / Firefox - Driver
  13. 限制爬取的速度。
  14. 处理表单中的隐藏域。
  15. 在读取到隐藏域之前不要提交表单
  16. 用RoboBrowser这样的工具辅助提交表单
  17. 处理表单中的验证码。
  18. OCR(Tesseract) - 商业项目一般不考虑

  19. 专业识别平台 - 超级鹰 / 云打码

    from hashlib import md5
    
    class ChaoClient(object):
    
        def __init__(self, username, password, soft_id):
            self.username = username
            password =  password.encode('utf-8')
            self.password = md5(password).hexdigest()
            self.soft_id = soft_id
            self.base_params = {
                'user': self.username,
                'pass2': self.password,
                'softid': self.soft_id,
            }
            self.headers = {
                'Connection': 'Keep-Alive',
                'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
            }
    
        def post_pic(self, im, codetype):
            params = {
                'codetype': codetype,
            }
            params.update(self.base_params)
            files = {'userfile': ('captcha.jpg', im)}
            r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
            return r.json()
    
    
    if __name__ == '__main__':
        client = ChaoClient('用户名', '密码', '软件ID')
        with open('captcha.jpg', 'rb') as file:                                                
            print(client.post_pic(file, 1902))                                          
    
  20. 绕开“陷阱”。

  21. 网页上有诱使爬虫爬取的爬取的隐藏链接(陷阱或蜜罐)
  22. 通过Selenium+WebDriver+Chrome判断链接是否可见或在可视区域
  23. 隐藏身份。
  24. 代理服务 - 快代理 / 讯代理 / 芝麻代理 / 蘑菇代理 / 云代理

    《爬虫代理哪家强?十大付费代理详细对比评测出炉!》

  25. 洋葱路由 - 国内需要翻墙才能使用

    yum -y install tor
    useradd admin -d /home/admin
    passwd admin
    chown -R admin:admin /home/admin
    chown -R admin:admin /var/run/tor
    tor