MAC +python+mitmdump爬取香哈菜譜app端信息

  • 寫在前面 
    • 今天老婆說要做菜,可是廚藝不精啊,上網看到了一款菜普神器,安利給大家,香哈菜譜。飯後研究了一下。以前都是做web爬蟲的,今天決定想爬爬移動端的,就拿這款app 開練。
    • 網上查看了好多教程,移動端的爬取基本上就是 mitmproxy+appium 這種騷操作,可是蛋疼的是appium 這個鬼東西一直在我的mac 上就是安裝不成功。問題有三個貼出來,有哪位大神路過幫忙指點一下,不勝感激。
  • appium 沒搞好,準備就要放棄了。可是 想了想,appium 不就實現的是模仿人操作而已,不影響爬數據啊。那不行啊,那得幹!

 

 

環境:

  • Mac Pro
  • python 3.7
  • mitmproxy ,mitmdum,mitmweb
  • pycharm
  • 香哈菜譜ios app

 開整:

  • 配置代理
    • 安裝mitmproxy
      1. 通過 pip install mitmproxy
      2. 安裝通過安裝包安裝     網址:https://github.com/mitmproxy/mitmproxy/releases
    • 證書安裝
      1. 保證mac 和iphone 在同一局域網
      2. 啓動 mitmproxy  -p 8888 ,查看mac ip (ifconfig),然後將iPhone 所連接的wifi 代理設置成手動 ip 爲 mac 的 本機ip。
      3. iphone打開http://mitm.it/ 下載CA 證書,然後安裝設置,關於手機,描述文件中安裝。
      4. 停掉mitmproxy  ,運行  mitmweb -p 8888.
      5. 打開嘻哈菜譜,不出意外 會在web 端看到數據,如下:
      6. 分析數據後,我們看到了 app 請求的數據。然後用 編輯 scprit.py 如下:
    • import json
      
      def check_json_format(raw_msg):
          """
          用於判斷一個字符串是否符合Json格式
          :param self:
          :return:
          """
          if isinstance(raw_msg, str):  # 首先判斷變量是否爲字符串
              try:
                  json.loads(raw_msg, encoding='utf-8')
              except ValueError:
                  return False
              return True
          else:
              return False
      
      
      def response(flow):
          url = 'apiios.xiangha.com/main8/'
          if url in flow.request.url:
              text = flow.response.text
              if check_json_format(text):
                  data_json = json.loads(text)
                  if data_json and data_json.get('data').get('dishs'):
                      datas = data_json.get('data').get('dishs')
                      for data in datas:
                          try:
                              dish_info = {
                                  'name': data.get('name'),
                                  'level': data.get('level'),
                                  'favorites': data.get('favorites'),
                                  'burdens': data.get('burdens'),
                                  'allClick': data.get('allClick'),
                                  'video_url': data.get('video').get('url'),
                                  'video_time': data.get('video').get('duration'),
                              }
                              print(dish_info)
                          except Exception as e:
                              print(e)
      

          7. 運行 mitmdump -p 8888 -s script.py  可以看到如下數據

      1.    

  • 到此 我們算是拿到了 香哈菜譜的 一些數據,等改天appium 的問題解決後,在整體爬一下。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章