搜狗微信列表页数据采集之跳过验证码

搜狗微信采集重点在于以下几处

1.在不登录的情况下只能浏览前十页,在登录的情况下只能爬取前一百页。(自行解决吧我也是没什么好办法)

2.搜狗微信的主要反爬措施是封 IP 和封 Cookie。

error.png

先看一张图片 这张图片上写到了IP(但是实际上他并不是ip出现问题了),一般来说这是cookies出现问题了再简单点就是snuid

获取snuid可以从搜狗浏览器的视频入手

在访问搜狗浏览器的视频分类时会返回cookie值

eg:

{"IPLOC": "CN1100", "SNUID": "792CA21E6366ED3196EDFE8A6396EF4D", "SUV": "00BF427F7CC14F1A5D36A351F020A401", "JSESSIONID": "aaay_uC7scjDFfXEFBDWw"}

直接取出snuid即可 

另外访问搜狗微信的cookie的其他值可以直接从浏览器中复制(其余值有效期为一年)或者也可以自动生成 

至此大的问题都已经解决了

代码
 

from functools import reduce
import phpserialize
import time
import requests
import json
import random
import logging
from logging.handlers import RotatingFileHandler
import os
from lxml import etree
from fake_useragent import UserAgent
from database.db_function import get_keyword, update_flag, get_proxy
from database.piplines import DataPipeline
from operate.function import hash

#
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
# 定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K
rHandler = RotatingFileHandler("sgwx_log.txt", maxBytes=10 * 1024, backupCount=5)
rHandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rHandler.setFormatter(formatter)
console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)
logger.addHandler(rHandler)
logger.addHandler(console)

yq = 5
ua = UserAgent().random
header = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Cache-Control": "no-cache",
    "Connection": "keep-a
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值