常见反爬策略及应对方案

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

    • Accept

    • User-Agent

    • Referer

    • Accept-Encoding

    • Accept-Language

  2. 检查网站生成的Cookie。

    • 有用的插件:EditThisCookie
    • 如何处理脚本动态生成的Cookie
  3. 抓取动态内容。

    • Selenium + WebDriver
    • Chrome / Firefox - Driver
  4. 限制爬取的速度。

  5. 处理表单中的隐藏域。

    • 在读取到隐藏域之前不要提交表单
    • 用RoboBrowser这样的工具辅助提交表单
  6. 处理表单中的验证码。

    • OCR(Tesseract) - 商业项目一般不考虑

    • 专业识别平台 - 超级鹰 / 云打码 ```python from hashlib import md5

class ChaoClient(object):

  1. def __init__(self, username, password, soft_id):
  2. self.username = username
  3. password = password.encode('utf-8')
  4. self.password = md5(password).hexdigest()
  5. self.soft_id = soft_id
  6. self.base_params = {
  7. 'user': self.username,
  8. 'pass2': self.password,
  9. 'softid': self.soft_id,
  10. }
  11. self.headers = {
  12. 'Connection': 'Keep-Alive',
  13. 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
  14. }
  15. def post_pic(self, im, codetype):
  16. params = {
  17. 'codetype': codetype,
  18. }
  19. params.update(self.base_params)
  20. files = {'userfile': ('captcha.jpg', im)}
  21. r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
  22. return r.json()

if name == ‘main‘: client = ChaoClient(‘用户名’, ‘密码’, ‘软件ID’) with open(‘captcha.jpg’, ‘rb’) as file:
print(client.post_pic(file, 1902))

  1. 7.
  2. 绕开“陷阱”。
  3. - 网页上有诱使爬虫爬取的爬取的隐藏链接(陷阱或蜜罐)
  4. - 通过Selenium+WebDriver+Chrome判断链接是否可见或在可视区域
  5. 8.
  6. 隐藏身份。
  7. -
  8. 代理服务 - 快代理 / 讯代理 / 芝麻代理 / 蘑菇代理 / 云代理
  9. <br />[《爬虫代理哪家强?十大付费代理详细对比评测出炉!》](https://cuiqingcai.com/5094.html)
  10. -
  11. 洋葱路由 - 国内需要翻墙才能使用
  12. ```shell
  13. yum -y install tor
  14. useradd admin -d /home/admin
  15. passwd admin
  16. chown -R admin:admin /home/admin
  17. chown -R admin:admin /var/run/tor
  18. tor