最新sogou搜狗搜索 机智操作绕过反爬验证码!

本文介绍了如何使用Scrapy爬取搜狗搜索结果并绕过反爬虫机制,包括更换IP、设置伪装header、动态获取cookies等策略。通过访问搜狗家族其他页面获取新的cookies,成功避免触发验证码,实现长时间稳定爬取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情提要

此代码使用scrapy框架爬取特定“关键词”下的搜狗常规搜索结果,保存到同级目录下csv文件。并非爬取微信公众号文章,但是绕过验证码的原理相同。如有错误,希望大家指正。

URL结构

https://www.sogou.com/web?query={关键词}&page={n}

开始爬取

scrapy常规操作就不唠叨了,上代码

class SougouSearchSpider(scrapy.Spider):
    name = 'sogou_search'
    allowed_domains = ['www.sogou.com']
    start_urls = ['https://www.sogou.com/web?query=python&page=1']

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url=url,
                                 callback=self.parse)

一顿操作后,发现刚爬了3页,就停止了。报错如下

2020-06-11 16:05:15 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET http://www.sogou.com/ant

应该访问的第四页被302重定向到了antispider反爬虫的验证码界面

看到这里,我们采取一下常规措施:1.更换动态IP2.伪装header3.硬刚破解验证码

一步一步来,我们先更换IP。这里我使用的是使用Redis的免费代理IP池:ProxyPool,Github地址。非常nice,代码十分简练。

import requests
proxypool_url = 'http://127.0.0.1:5555/random'
def get_random_proxy():
    response = requests.get(proxypool_url)
    try:
        if response.status_code == 200:
            return response.text.strip()
    except ConnectionError:
        return None

遗憾的是,只换IP不太行,还是会被302到antispider页面。接下来,我们伪装一下header,先看一下request.header。手动搜索,然后F12查看。

user-agent可以由fake_useragent随机生成,Github地址。难的是cookies。

ssuid=6821
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值