python cookie伪造_关于python scrapy中添加cookie踩坑记录

问题发现:

前段时间项目中,为了防止被封号(提供的可用账号太少),对于能不登录就可以抓取的内容采用不带cookie的策略,只有必要的内容才带上cookie去访问。

本来想着很简单:在每个抛出来的Request的meta中带上一个标志位,通过在CookieMiddleware中查看这个标志位,决定是否是给这个Request是否装上Cookie。

实现的代码大致如下:

class CookieMiddleware(object):

"""

每次请求都随机从账号池中选择一个账号去访问

"""

def __init__(self):

client = pymongo.MongoClient(MONGO_URI)

self.account_collection = client[MONGO_DATABASE][ACCOUNT_COLLECTION]

def process_request(self, request, spider):

if 'target' in request.meta:

logging.debug('进入到process_request了')

flag = request.meta['target']

if flag != 'no':

all_count = self.account_collection.find({'status': 'success'}).count()

if all_count == 0:

raise Exception('当前账号池为空')

random_index = random.randint(0, all_count - 1)

random_account = self.account_collection.find({'status': 'success'})[random_index]

request.cookies = json.loads(random_account['cookie'])

else:

logging.debug(

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值