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

前情提要

此代码使用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=6821261448; IPLOC=CN3301; 
SUID=6E4A782A1810990A000000005D1B0530; 
SUV=001E174F2A784A5C5D356F6A8DE34468; 
wuid=AAGgaAPZKAAAAAqLFD1NdAgAGwY=; 
CXID=76D40644BC123D9C02A653E240879D21; 
ABTEST=1|1590639095|v17; browerV=3; osV=1; pgv_pvi=4077461504; 
ad=TWMV9lllll2WYZuMlllllVEYsfUlllllKgo1fZllll9lllllxllll5@@@@@@@@@@; 
pgv_si=s7053197312; clientId=1B608ECCC1D96A9828CC801DC0116B61; 
SNUID=8BAB9BC9E2E6452717FC02C7E3A7749E; 
ld=VZllllllll2W88XflllllVEPcwylllll3XPwWlllllUllllljZlll5@@@@@@@@@@; 
sst0=711; LSTMV=190%2C728; LCLKINT=2808800; sct=36

多访问几个网页,查看参数变化。然后发现重要的参数只有两个

SUV=001E174F2A784A5C5D356F6A8DE34468;
SNUID=8BAB9BC9E2E6452717FC02C7E3A7749E;

然后我就带着这两个参数的cookies去访问了,虽然多爬了2页,但是很快遇到了antispider。

然后我就想我每访问一页,换一组cookies,行不行?

机智操作登场

突然想到,搜狗是一个大家族,我访问其他搜狗页面,比如搜狗视频,应该也能拿到cookies。

def get_new_cookies():# 搜狗视频urlurl = 'https://v.sogou.com/v?ie=utf8&query=&p=40030600'proxies = {"http": "http://" + get_random_proxy()}headers = {'User-Agent': ua}rst = requests.get(url=url,headers=headers,allow_redirects=False,proxies=proxies)cookies = rst.cookies.get_dict()return cookies

果不其然,得到了想要的cookies:

{'IPLOC': 'CN3301', 
'SNUID': '13320250797FDDB3968937127A18F658', 
'SUV': '00390FEA2A7848695EE1EE6630A8C887', 
'JSESSIONID': 'aaakft_AlKG3p7g_ZIIkx'}

多打印了几次,每次的cookies值都不一样。这就OK了,马上放进scrapy。

大功告成

我尝试了每3秒爬一个网页,运行两小时,没触发antispider!

这样就满足我的需求了,就没有硬刚破解验证码。当然对接第三方打码平台很容易,就不多说了。如果你嫌弃慢的话,可以缩短时间间隔。

完整代码如下

sougou_search.py

# coding=utf-8
from sougou_search_spider.items import SougouSearchSpiderItem
from IP.free_ip import get_random_proxy
from IP.get_cookies import get_new_cookies,get_new_headers
import scrapy
import time
import randomclass SougouSearchSpider(scrapy.Spider):name = 'sogou_search'allowed_domains = ['www.sogou.com']start_urls = ['https://www.sogou.com/web?query=python']def start_requests(self):headers = get_new_headers()for url in self.start_urls:# 获取代理IPproxy = 'http://' + str(get_random_proxy())yield scrapy.Request(url=url,callback=self.parse,headers=headers,meta={'http_proxy': proxy})def parse(self, response):headers_new = get_new_headers()cookies_new = get_new_cookies()# 获取当前页码current_page = int(response.xpath('//div[@id="pagebar_container"]/span/text()').extract_first())# 解析当前页面for i, a in enumerate(response.xpath('//div[contains(@class,"vrwrap")]/h3[@class="vrTitle"]/a')):# 获取标题,去除空格和换行符title = ''.join(a.xpath('./em/text() | ./text()').extract()).replace(' ', '').replace('\n', '')if title:item = SougouSearchSpiderItem()# 获取访问链接(①非跳转链接②跳转链接)、页码、行数、标题if a.xpath('@href').extract_first().startswith('/link'):item['visit_url'] = 'www.sogou.com' + a.xpath('@href').extract_first()  # 提取链接else:item['visit_url'] = a.xpath('@href').extract_first()item['page'] = current_pageitem['rank'] = i + 1item['title'] = titleyield item# 控制爬取频率time.sleep(random.randint(8, 10))# 获取“下一页”的链接p = response.xpath('//div[@id="pagebar_container"]/a[@id="sogou_next"]')if p:p_url = 'https://www.sogou.com/web' + str(p.xpath('@href').extract_first())proxy = 'http://' + str(get_random_proxy())yield scrapy.Request(url=p_url,callback=self.parse,headers=headers_new,cookies=cookies_new,meta={'http_proxy': proxy})

get_cookies.py

# coding=utf-8
from IP.free_ip import get_random_proxy
from fake_useragent import UserAgent
import requestsua = UserAgent().randomdef get_new_headers():headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","Accept-Encoding": "gzip, deflate, br","Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8","User-Agent": ua}return headersdef get_new_cookies():url = 'https://v.sogou.com/v?ie=utf8&query=&p=40030600'proxies = {"http": "http://" + get_random_proxy()}headers = {'User-Agent': ua}rst = requests.get(url=url,headers=headers,allow_redirects=False,proxies=proxies)cookies = rst.cookies.get_dict()return cookiesif __name__ == '__main__':print(get_new_cookies())

free_ip.py

# coding=utf-8
import requestsproxypool_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 Noneif __name__ == '__main__':print(get_random_proxy())

setting.py

BOT_NAME = 'sougou_search_spider'SPIDER_MODULES = ['sougou_search_spider.spiders']
NEWSPIDER_MODULE = 'sougou_search_spider.spiders'REDIRECT_ENABLED = False
HTTPERROR_ALLOWED_CODES = [302]ROBOTSTXT_OBEY = False
COOKIES_ENABLED = TrueITEM_PIPELINES = {'sougou_search_spider.pipelines.CsvSougouSearchSpiderPipeline': 300,
}

源码获取u加群:1136192749

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于pyppeteer模拟浏览器方式破解极验滑块验证码

1.背景 在爬虫领域中&#xff0c;可能你有很多中破解手段&#xff0c;但是随着产品的迭代和技术新进&#xff0c;反爬措施也就趋于智能化&#xff0c;我们也就要模拟人的想法来破解了 2.目标 本节将介绍基于pyppeteer技术来模拟浏览器方式的滑块验证码图片 主要步骤&#x…

网络爬虫-tx滑块验证码

仅供研究学习使用。 目标站点 --> 腾讯防水墙官网 首先打开Fiddler&#xff0c;刷新下页面完成一组操作&#xff0c;发现主要请求有这几个 去除加载的js与log上传&#xff0c;真正的一组操作有三个&#xff1a; 1是初始化验证码。详细请求为 GET https://t.captcha.qq.co…

验证码识别登录:使用超级鹰(验证码识别第三方包)识别超级鹰网站登录

验证码识别超级鹰网址&#xff1a;超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 (chaojiying.com) 注册并微信扫码即可获得1000积分&#xff0c;首先做如图操作生成ID 然后下载其第三方开发api python文件 点击下载即可&#xff0c;将下载…

selenium 超级鹰 通过携程滑块和汉字验证码

大概流程 1、进入页面点击同意按钮。 2、得到滑块和滑块区域的xpath 3、定位滑块&#xff0c;设置按住事件&#xff0c;进行拖动 4、xpath定位汉字图片&#xff0c;获取屏幕截图&#xff0c;保存本地 5、超级鹰识别图片返回汉字对应的坐标&#xff0c;移动至坐标位置进行点击。…

面试中经常问到的几个问题,快来看看能答对几道吧

写在前面 CSDN话题挑战赛第1期 活动详情地址&#xff1a;https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题&#xff1a;前端面试宝典 话题描述&#xff1a;欢迎各位加入话题创作得小伙伴&#xff0c;如果我没有猜错得话&#xff0c;我觉得你是应该同…

速卖通大卖不会告诉你的技巧,学会这招出单很简单

如今&#xff0c;无论是在实体店还是在网上&#xff0c;“流量”一词都很熟悉&#xff0c;流量越大&#xff0c;交易量自然就越大。从事国内电商的朋友都知道&#xff0c;要把网店做好&#xff0c;首先要做好店铺信誉&#xff0c;这样才能有更多的流量。尽管速卖通是一个重产品…

速卖通新手卖家入门知识问答

美国有亚马逊&#xff0c;中国有速卖通。我们都知道“十年一剑速卖通”&#xff0c;自2010年速卖通成立并高速发展&#xff0c;至今已覆盖全球220个国家和地区&#xff0c;支持18种语言&#xff0c;支持全球51个国家的当地支付方式&#xff0c;海外成交卖家突破1.5亿。速卖通已…

速卖通正式推出全托管,卖家竞争进入新阶段

全托管来了&#xff0c;卖家就能安心做甩手掌柜吗&#xff1f; 正式推出全托管 显而易见&#xff0c;越来越多的平台正在转向全托管模式。 近日&#xff0c;速卖通在2023年度商家峰会上&#xff0c;正式推出了全托管服务模式。官方表示&#xff0c;托管是对速卖通平台商家服…

【速卖通】 AliExpress(速卖通)关键词搜索结果采集

采集场景 在AliExpress(速卖通) 首页中 http://www.aliexpress.com 中输入关键词&#xff0c;采集关键词搜索后得到的商品列表信息。 采集字段 关键词、标题、商品id、商品图片地址、商品详情链接、价格、免费退送货、星级、已出售数量、店铺名 采集结果 采集结果可导出为E…

速卖通正在运营的店铺,流量突然下滑卖家该怎么做

现在速卖通卖家的生意多少都变差了&#xff0c;不管承不承认&#xff0c;这都是客观原因。人人都说速卖通正在转型&#xff0c;本来是打算给予精品店铺、风格化店铺一定的扶持&#xff0c;逐渐品牌化。而照现在看来之前的打算还没落实&#xff0c;又紧急推出大卖的天堂AE-MALL&…

121.Android 简单的人工智能聊天项目,chatAi,AI聊天项目,GPTAi

//首页xml布局代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"mat…

3 名离职员工窃取公司游戏源码,半年狂赚 1.5 亿,网友:“自立门户也不带这样玩的!”...

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; 对于游戏公司而言&#xff0c;安全、抄袭问题总是「防不胜防」。 不仅要抵御黑客攻击、排查自身的安全漏洞&#xff0c;还要警惕员工拿着代码跑了&#xff01; 近日&#xff0c;据上海市…

揭秘 “移动云杯”移动赛道——算网应用自定义创新子赛道

【赛事介绍】 随着我国“东数西算”工程的推进&#xff0c;算力网络正成为国家、社会、产业发展的战略要求&#xff0c;在数字中国建设进程中发挥着重要引擎作用。中国移动作为我国数字经济发展的“排头兵”&#xff0c;锚定“世界一流信息服务科技创新公司”核心定位&#xff…

揭秘“移动云杯”行业赛道——行业应用创新子赛道

【赛事介绍】 为助力中国移动算力网络的发展&#xff0c;加速移动云向算力网络演进过程&#xff0c;促进基于移动云产品能力的创新应用与解决方案的丰富&#xff0c;中国移动联合多家单位举办第二届“移动云杯”算力网络应用创新大赛&#xff0c;为算力网络的战略落实提供创新平…

国内下载谷歌插件的免费方法

插件功能让Chrome浏览器变得更加优秀&#xff0c;极大地提升了用户体验&#xff0c;给用户一种定制式的在线服务。但是在国内&#xff0c;用户无法登陆谷歌商店&#xff0c;在不能科学上网的情况下&#xff0c;想要下载插件的方法是使用第三方插件下载器。 扩展坞是一个很方便…

Android 点击 App icon 发生了什么?

Gityuan – startActivity启动过程分析 点击桌面App图标&#xff0c;Launcher进程采用Binder IPC向system_server进程发起startActivity请求&#xff1b;system_server 进程接收到请求后&#xff0c;向 zygote 进程发送创建进程的请求&#xff1b;Zygote 进程 fork 出新的子进…

Android开发中app图标更换

最近学习Android开发 然后自己有点菜 一遇到问题就没办法自己解决只能百度解决 然后我在如何修改app图标遇到了一些问题 下面是我解决问题的一些过程 写下来以后自己好看 首先网上的教程是 复制一张图片&#xff08;png格式&#xff09;到资源文件夹下面的drawable目录下&am…

QT for Android设置APP应用图标和名称

APP应用图标 在工程目录中&#xff0c;创建一个Android_sources文件夹&#xff0c;与xxx.pro文件在同一目录下 在QT界面中&#xff0c;打开xxx.pro文件&#xff0c;在最后一行添加ANDROID_PACKAGE_SOURCE_DIR $$PWD/android-sources 在工程文件夹下的Android-build文件中&am…

直播推流方案

一、关键特性 1&#xff09;输入输出接口支持MIPI/BT1120/LVDS输入&#xff0c;MIPI/LVDS输出 2&#xff09;网络接口支持千兆网口、WiFi、4G/5G 3&#xff09;输入输出格式最高支持1080p60Hz&#xff08;RV1126最高4Kp30Hz&#xff09; 4&#xff09;视频编码支持H.264和H.26…

不止直播:腾讯云直播MLVB 插件除了推流/拉流还有哪些亮眼功能

在之前几篇的文章中&#xff0c;我们介绍了腾讯云移动直播插件MLVB的一些基础概念&#xff08;&#xff09;以及移动直播控件可以拓展的直播场景&#xff08;&#xff09;&#xff0c;今天就来分享MLVB插件除了直播的基础推拉流功能以外还有哪些功能来帮助直播APP和小程序拉新和…