当前位置:   article > 正文

使用selenium爬取猫眼,使用mitmproxy过美团检测_mitmproxy 被检测

mitmproxy 被检测

具体猫眼数据(电影详情数据、演员详情数据)参考这篇博客:如何爬取猫眼全部信息(电影信息、演员信息)

ubuntu环境下mitmproxy的安装配置详见:ubuntu环境下使用mitmproxy代理服务器

根据以上的连接,可以成功配置mitmproxy。

接下来,我们就要使用mitmproxy来拦截修改请求。由于猫眼使用的是对webdriver标示进行检测,所以我们可以拦截修改这个标示。拦截配置代码如下,按代码所示,如果拦截成功,会输出100个*的提示

proxy.py

  1. def response(flow):
  2. if 'webdriver' in flow.response.text:
  3. print('*' * 100)
  4. print('find web_driver key')
  5. flow.response.text = flow.response.text.replace("webdriver", "fuck_that_1")
  6. if 'Webdriver' in flow.response.text:
  7. print('*' * 100)
  8. print('find web_driver key')
  9. flow.response.text = flow.response.text.replace("Webdriver", "fuck_that_2")
  10. if 'WEBDRIVER' in flow.response.text:
  11. print('*' * 100)
  12. print('find web_driver key')
  13. flow.response.text = flow.response.text.replace("WEBDRIVER", "fuck_that_3")

先在该py文件文件夹内终端运行

mitmdump -s proxys.py

 此时mitmproxy会按照proxys中规定的配置拦截修改wendriver。注意!!!运行该拦截默认端口为8080。所以为了减少mitmproxy的工作量,我关闭了电脑的手动代理配置,即电脑按照正常的方式上网,正常的流量不让他们经过mitmproxy,而是在运行爬虫的时候让爬虫代码走这个8080端口代理。详见如下:

  1. from selenium import webdriver
  2. from selenium.webdriver import ChromeOptions
  3. from lxml import etree
  4. import requests
  5. import html
  6. import re
  7. option = webdriver.ChromeOptions()
  8. PROXY = "127.0.0.1:8080"
  9. option.add_argument('--proxy-server=%s'%PROXY)
  10. option.add_experimental_option('excludeSwitches', ['enable-automation'])
  11. #打开浏览器
  12. brower = webdriver.Chrome(options = option)
  13. #让浏览器对指定url发起访问
  14. brower.get('https://maoyan.com/films/1190122')
  15. #获取浏览器当前打开页面的页面源码数据(可见即可得)
  16. page_text = brower.page_source
  17. #print(page_text)
  18. if "验证中心" in page_text:
  19. print("美团验证")
  20. else:
  21. tree = etree.HTML(page_text)
  22. score = tree.xpath('//div[@class="movie-index-content score normal-score"]/span[1]/span[1]/text()')[0]
  23. ASCll = str(score)
  24. utfs = str(ASCll.encode('unicode_escape')).replace("b","").replace("'","").replace("\\\\u",";&#x").split('.')
  25. unicode = utfs[0][1:]+";."+utfs[1][1:]+";"
  26. print(unicode)

接下来,我们运行如上代码,proxys.py代码运行终端部分结果如下,可见拦截修改成功。

上面爬取猫眼电影详情信息的代码如下,如下信息为评分,直接爬去由于编码的缘故出现乱码,我将其进行unicode编码,以便之后进行字体解密。

具体猫眼数据(电影详情数据、演员详情数据)参考这篇博客:如何爬取猫眼全部信息(电影信息、演员信息)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/372003
推荐阅读
相关标签
  

闽ICP备14008679号