python爬虫-selenium破解封IP+TensorFlow机器人AI技术破解网页加密

python爬虫-selenium破解封IP+pytesseract破解验证码+AI破解网页加密

一直在it大咖网从事python大数据挖掘、数据爬虫、AI技术开发工作,最近在深入研究人工智能“深度学习”TensorFlow技术,采用AI技术做数据爬虫和数据挖掘的工作,AI技术主要是建立爬虫的模型、深度训练机器人、样本数据验证模型、最后我们的机器人就可以像我们千军万马的真人在做爬虫的工作了,解决了爬虫界遇到的各种验证码、封IP、加密的问题。

爬虫遇到的各种反爬难题:

我们知道人工智能的前面工作是喂养大量数据,那么这些数据怎么来呢?大数据的来源是需要用深度爬虫技术技术解决的,我从事过天某查的大数据爬虫系统深度研发、几个亿企业工商数据的采集和城市数据库建立、企某宝、企某查、淘宝、天猫、国家工商公示系统网站的数据爬虫采集等,每个网站的反爬技术都是不同的,像天某查,您如果需要采用python简单的request.get()技术是爬不到数据的,为什么呢?因为这个网站做了强大的反爬技术措施,您只要发起http模拟请求,立刻检测到您是爬虫,然后把您的IP封掉,或者直接服务器那边拒绝你访问。除了封IP外,第二个反爬技术提现在验证码,网站使用验证码的目的就是防止网站数据被爬虫程序机器爬去,因为普通的爬虫就技术是识别不出验证码的,需要用人的眼睛看才能识别出来验证码的数字,所以验证码一直是网站一道强大的守门神。比如当您爬天某查的时候,程序运行几分钟后就会自动弹出个验证码,如果您没有破解验证码那么爬虫工作也就停止了。更有趣的是有些网站采用矢量图加密,也就是传说中的字体库加密,很多爬虫高手对于这个问题缺少是束手无策。因为自己一直喜欢深度研究爬虫技术,希望的经验分享给大家,给大家一点启发.

当前网站的反爬技术有哪些:

1、天某查反爬技术分析:

图形验证码反爬:采用是图形验证码反爬技术,进行人机识别,实现反爬目的

(2)封IP发爬:服务器后台监控每个IP爬取数据的频率,如果发现同一个IP老是一直在采集就会封掉ip。

(3)VIP登录反爬:有些数据需要登录,如果不用VIP登陆是不能看到这些数据的,必须登录才能进行爬取数据。

矢量图加密:天某查的技术团队自己研发了一套字体库,用来混淆加密,让我们用浏览器打开看到的数据是正常的,但是用google或者firefox查看元素的时候看到的值是加密的值,现在这个技术对注册资本、公司经营范围、手机号码、邮箱字段等进行了字体库加密,所以我们眼睛看到的和元素源码看到的数据是不一致的,这个也是目前最高端的反爬技术。几乎没有人能够破解。(需要爬虫技术和大数据交流朋友加我qq:2779571288)

分享基础版爬虫思路:

像这种综合反爬技术的网站,我们要去批量采集数据,我们需要采取对的技术方式,比如如果我们需要爬取类似这种网站所有的企业工商数据,那么我们可以采用动态代理ip+cookie方式去采集,只有用python简单的 requests库和 BS4库即可,demo代码如下:

***************************动态代理IP爬虫完整方法*************************************************************************

Headers:是请求头,您需要模拟浏览器的请求头,请求头到底有哪些参数呢,您用google浏览器或者firefox火狐浏览器打开这个网站 然后查看元素,看网络请求里面有个 Request headers 这个就是请求头需要模拟发送的参数。如下图:

cookies:是您打开那个网站后用firebox请求记录里可以看到的cookie值复制过得即可;

Proxy: 是代理IP,您一定要用动态的爬虫代理IP去爬这种的网站,如果失败就循环下个代理IP直到成功为止。 代理IP可以去网上或者淘宝购买一些第三方的动态代理IP,但是需要高质量的、高匿名的、不限量的否则你几乎是爬不成功的,不要用几个IP尝试不成功觉得不行,需要循环大量IP,因为有些IP本身就暴露自己的身份了。

完整的爬虫代码:

import re

import requests

from bs4 import BeautifulSoup

def get_html(url, headers={}, cookies={}.proxy={}):

while True:

try:

print("模拟请求:"+url);

resp = requests.get(url, headers=headers, cookies=cookies, proxies=proxy, timeout=10)

else:

resp = requests.get(url, headers=mheaders, cookies=cookies, proxies=proxy, timeout=10)

if 'tianyancha' in url:

if resp.status_code == requests.codes.ok:

if '请输入验证码' not in resp.text:

return resp.text

else:

print('{}被封了!'.format(proxy))

elif '融资历史' in resp.text:

return resp.text

else:

print('返回代码编号1:{}, url:{}'.format(resp.status_code, url))

else:

if resp.status_code == requests.codes.ok:

if '小查为' in resp.text or '基本信息' in resp.text:

return resp.text

else:

print('返回的代码编号2:{}, url:{}'.format(resp.status_code, url))

except Exception as e:

print('url :{},捕获code:{}'.format(url, e))

这种简单的爬取方法不用什么框架,直接python引进bs4库用BeautifulSoup解析html的数据、用requests库来发起网络get的请求即可,简单几行代码即可。

面临的问题:

下面问题来了,我们采用的这种get+动态代理IP爬取这种加密的数据,而且需要登录才能看到的数据,面临的问题就是 手机号码是加密的 你爬不到手机号码,邮箱也是加密的,更厉害是注册资本也是用矢量字体库加密技术加密的,而且需要消耗大量的动态代理ip,高质量的动态ip成本是一个月几千到几万的费用,这样的爬虫技术是无法满足真正采集目的。

分享中端版解决思路:

我们需要解决的是手机号码加密,可以爬取到会员登录看到的数据,那么我们采用的技术方案是:会员模拟登陆,而且还要绕过封IPD 的问题,那么在python爬虫技术中,我们只要采用chromedriver+selenium+chrome来实现自动模拟人工登录,模拟正常人一样的打开浏览器然后输入关键词然后去搜索然后得到数据结构,这样就是完全真实浏览器操作一样,目标网站是无法识别出来的。那么这里需要注意几点:就是chromedriver版本和chrome版本要对应,否则是是不成功的。

**************selenium+chromedriver+chrome 安装*****************************

1 安装pyhton3

2 下载 chromedriver.exe (v2.41版本) 放入 E:\python3.7\Scripts目录下

3 安装 chrome 版本 69.0.3497.100(正式版本) (64 位)

chrome浏览器地址:https://dl.lancdn.com/landian/software/chrome/m/

chromedriver.exe 下载地址: http://npm.taobao.org/mirrors/chromedrive

***********selenium+chromedriver+chrome完整demo**************

# encoding=utf-8

# ----------------------------------------

# 语言:Python3.7

# 日期:2018-05-01

# 功能:破解图形验证码,

# ---------------------------------------

import time

import json

import os

import io

import sys

import re

import requests

from bs4 import BeautifulSoup

from selenium import webdrive

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait

options = webdriver.ChromeOptions()

browser = webdriver.Chrome(chrome_options=options)

global count

browser.set_window_size(1050, 900) #设置浏览器打开窗口大小

browser.get('https://www.tianxxxxcha.com/login’)#用get打开网址

html=Browser.page_source #用获取网页的html源码

Print(html) #打印出来看看结果是不是

#模拟登陆:

#找到搜索框

searchbox=browser.find_element(By.XPATH,'.//*[@class="input -sm js-live-search-auto"]')

searchbtn=browser.find_element(By.XPATH,'.//*[@class="input-group-btn btn -sm btn-primary"]')

searchbox.click();#鼠标点击一下搜索框 鼠标放入搜索框意思

searchbox.clear()

time.sleep(2) #停留2秒不要太快,否容易被检测到

searchbox.send_keys(‘上海xxx有限公司’) #控制鼠标把需要采集的关键词输入到搜索框去

time.sleep(2) #停留2秒不要太快,否容易被检测到

searchbtn.click(); #模拟鼠标 点击“搜索”按钮

***********************************************************************

下面是selenium操作浏览器鼠标键盘的各种方法:

WebElement接口获取值

size 获取元素的尺寸

text 获取元素的文本

get_attribute(name) 获取属性值

location 获取元素坐标,先找到要获取的元素,再调用该方法

page_source 返回页面源码

driver.title 返回页面标题

current_url 获取当前页面的URL

is_displayed() 设置该元素是否可见

is_enabled() 判断元素是否被使用

is_selected() 判断元素是否被选中

tag_name 返回元素的tagName

**********************************************************************************

2、国家工商信息系统网反爬技术分析:

(1)、二代极速拖拉验证码反爬技术:图形验证码是比较传统的验证码破解难度更大一点,因为需要模拟拖动的速度、拼接的吻合度等等。而且这个网站是采取不登录方式,每次查询都需要输入一次验证码,导致90%的爬虫工程师都无法越过这个极速验证码真正去爬取里面的数据,因为如果用普通的技术去越过这种验证码 需要高质量的、高匿名的、无限量的爬虫动态代理IP,成本太大,几乎没有几个公司可以愿意承担得起这个成本,想要破解这种极速验证码需要用另外的技术方式来处理。

因为时间有限,今天只能先分享交流到这里,最近在做AI爬虫模型,后面给大家分享如果用python这种极速验证码、图像验证码、字体库加密,如何用TensorFlow 进行深度学习来做机器人和训练机器人模型(需要爬虫技术和大数据交流朋友加我qq:2779571288)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Apache API监控Uber的实时数据,第3篇:使用Vert.x的实时仪表板

这是一个系列文章中的第3篇,该系列由4篇组成。请务必先读第1篇和第2篇!

32910
来自专栏Python绿色通道

使用Python自动化发布文章:(一)

写在前面:坚持解决一个问题,花了两三个小时的时间终于解决了问题,最后我的自动化发布文章的功能终于实现了。

4233
来自专栏七夜安全博客

(原创)逆向某停车app

1536
来自专栏BIT泽清

棋牌游戏在App Store上架需要哪些流程没有版权号和运营资质怎么办

注:由于最近作者我的搜狐号被一些人恶意举报后,被冻结了。所以把之前的文章从新分享在这里给大家,避免大家没办法看到我的干货!!!

5.6K6
来自专栏我的安全视界观

【业务安全】业务安全之另类隐患

接收到提测邮件后,安全测试人员首先对已知漏洞在测试环境进行验证。使用burp对登录接口进行枚举验证:

1342
来自专栏互联网研发闲思录

爬虫抓取技术

  互联网数据很多,发现好内容并能持续不断的抓取是一项不简单的工作。 反反爬虫 爬虫的固定套路也就那么多,各种网站爬取策略的不同就在于网站的反爬虫机制不同,因此...

2495
来自专栏QQ会员技术团队的专栏

海量服务实践──手Q游戏春节红包项目设计与总结

1. 需求背景 1.1.红包类别 2017年的手Q春节游戏红包共有刷一刷/AR地图/扫福三种,如下图所示: ? 1.2.体验流程 虽然红包分三种,但在游戏业务...

2728
来自专栏FreeBuf

PRMitM:一种可重置账号密码的中间人攻击,双因素认证也无效

在今年的IEEE研讨会上,来自以色列管理学术研究学院的研究人员展示了一种新的攻击方法。这种攻击方法被命名为PRMitM,意为“密码重置中间人攻击(Passwor...

3125
来自专栏程序员的知识天地

作为程序猿,你有必要了解这些黑客工具!

我们曾对黑客的世界充满着无限的幻想和畏惧,但随着技术的崛起和安全领域的进步,黑客技术已经变得越来越普遍。事实上,很多黑客工具被用于网络安全的工具可以用来进行渗透...

1802
来自专栏鹅厂网事

走进腾讯公网传输系统

"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网...

4335

扫码关注云+社区

领取腾讯云代金券