Windows使用mitmdump踩过的坑

这几天没啥事,就想着爬取一下app上面的内容。
我这边的系统是用windows,先安装好了mitmproxy跟手机证书
由于windows上面不能打开mitmproxy的调试窗口,所以这边就用的charles抓包工具进行抓包。
先编写好程序

import json
import pymongo
from mitmproxy  import ctx
 client = pymongo.MongoClient(host='localhost', port=27017)
 db = client['igetget']
 collection = db['books']

def response(flow):、
	global collection
    url='https://m.igetget.com/hybrid/api/ebook/list'
    if flow.request.url.startswith(url):
        text=flow.response.text
        data=json.loads(text)
        books=data.get('data')
        for book in books:
            data={
                'title':book.get('operatingTitle'),
                'cover':book.get('cover'),
                'summary':book.get('otherShareSummary'),
                'price':book.get('currentPrice'),
                'anthor':book.get('bookAuthor')
            }
            ctx.log.info(str(data))
            collection.insert(data)

这样写的代码在windows的cmd中执行mitmdump -s filename.py运行程序,总是报错
在这里插入图片描述
然后百度了半天说是因为pymongo的版本过低,应该用insert方法插入,或者3.x的版本就用insert_one/many方法插入,看了我的版本是最新的,方法也试完了,还是不能解决。后面看了我的就是不能解决,按道理不应该啊,在pycharm中就不会存在这种问题的。
后来分析了一下报错的原因,改了下代码如下:

import json
import pymongo
from mitmproxy  import ctx


def response(flow):
    client = pymongo.MongoClient(host='localhost', port=27017)
    db = client['igetget']
    collection = db['books']
    url='https://m.igetget.com/hybrid/api/ebook/list'
    if flow.request.url.startswith(url):
        text=flow.response.text
        data=json.loads(text)
        books=data.get('data')
        for book in books:
            data={
                'title':book.get('operatingTitle'),
                'cover':book.get('cover'),
                'summary':book.get('otherShareSummary'),
                'price':book.get('currentPrice'),
                'anthor':book.get('bookAuthor')
            }
            ctx.log.info(str(data))
            collection.insert(data)

这样就完美解决了,但是按道理不应该啊,我上面是加了global的,不知道各位大佬给解释下

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mick Schumacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值