第一部分:客户端重定向VS服务器端重定向
客户端重定向是在服务器将页面内容发送到浏览器页面之前,由浏览器执行JavaScript完成的页面跳转,而不是服务器完成的跳转。当使用浏览器访问页面的时候,有时候很难区分这两种跳转。由于客户端重定向执行很快,加载页面是你甚至感觉不到任何延迟,所以会让你觉得这个重定向就是一个服务器端重定向。
但是,在进行网络数据采集的时候,这两种重定向的差异是非常明显的。根据具体情况,服务器端重定向一般都可以轻松地通过Python的urllib库解决,不需要使用Selenium。客户端重定向却不能这样处理,除非你有工具可以执行JavaScript。
第二部分:实战
Selenium可以执行这种JavaScript重定向,和它处理其他JavaScript的方式一样;但是这类重定向的主要问题是什么时候停止页面监控,也就是说,怎么识别一个页面已经完全重定向。在http://pythonscraping.com/pages/javascript/redirectDemo2.html的示例页面是客户端重定向的例子,有两秒的延迟。
我们可以用一种智能的方法来检测客户端重定向是否完成,首先从页面开始加载时就“监视”DOM中的一个元素,然后重复调用这个元素直到Selenium抛出一个StaleElementReferenceException异常;也就是说,元素不在页面的DOM里了,说明这是网站已经跳转。
实例代码如下:
from selenium import webdriver
import time
from selenium.webdriver.remote.webelement import WebElement
from selenium.common.exceptions import StaleElementReferenceException
def waitForLoad(driver):
elem=driver.find_element_by_tag_name("html")
count=0
while True:
count +=1
if count >20:
print("Timing out afer 10 seconds and returning")
return
time.sleep(.5)
elem=driver.find_element_by_tag_name("html")
except StaleElementReferenceException:
return
driver=webdriver.PhantomJS(executable_path='/usr/bin/phantomjs')
driver.get("http://pythonscraping.com/pages/javascript/redirectDemo2.html")
waitForLoad(driver)
print(dirver.page_source)
执行结果如下:
这个程序没半秒钟检查一次网页,看看html标签还在不在,时限为10秒钟,不过检查时间间隔和时限都可以根据实际情况随意调整。
蜜罐是一类没有实际业务用途的网络安全资源,本质是一种对攻击方进行欺骗的技术。
1.2 作用
价值是吸引攻击者对它进行非法使用, 从而帮助网络安全研究人员发现、捕获和分析攻击行为。
相比于入侵检测、防火墙等被动防护手段,蜜罐能够部署运行和捕获攻击数据,
2、物联网蜜罐
指以物联网计算、网络、感知及执行等资源为诱饵, 用于发现、捕获和分析物联网安全威胁的一种网络欺骗技术。
物联网终端设备存在的安全威胁:
缺乏身份认证
使用默认配置
固件不更新
网络安全性薄弱
2.1 构成
各写一个shell和python脚本来监控http请求,并在服务不可用的时候重启服务。监控的连接为:shell脚本如下,配合crontab计划任务每一分钟执行一次检查:#!/bin/bash#Thisshellisusedtomoniter192.168.1.101port5022&5024date#在crontab里用来记录log的时间i=0curl-s-m...
print('页面跳转后重新绑定selenium.')
time.sleep(3)
search_window = driver.current_window_handle # 此行代码用来定位当前页面
html =driver.page_source
print("打印标题")
print(driver.t...
from bs4 import BeautifulSoup
import time
#这里我已经下载了geckodriver放在火狐文件夹,如果放入所需要执行的Python脚本的所在处就不用写这个了
myDriver = webdriver.Firefox(executable_path...
chromeDriver是ChromeDriver对象的实例
final String beforeUrl = chromeDriver.getCurrentUrl();// 获取登录前的url地址
while (chromeDriver.getCurrentUrl().equals(beforeUrl)){// 不断的获取地址判断一下,地址有没有变
// 页面没有跳转就让他等待,等待自己重定向到登录后的页面,然后再获取cookie时就是正确的cookie
// 到这里说明页面进行了跳转
笔者使用python2.7+requests编写爬虫,以下问题针对此情况讨论。
重定向(Redirect)就是通过各种方法(本文提到的为3种)将各种网络请求重新定个方向转到其它位置(URL),编写的搜索引擎爬虫在爬取页面时遇到了网页被重定向的情况。当重定向发生在某个网站的主页时,作为该网站的入口,如果不能正确处理重定向很有可能会错失这整个网站的内容。
笔者编写的爬虫在爬取网页时遇到了三种重定向
Python数据网络采集5--处理Javascript和重定向到目前为止,我们和网站服务器通信的唯一方式,就是发出HTTP请求获取页面。有些网页,我们不需要单独请求,就可以和网络服务器交互(收发信息),那么这个网页可能采用了Ajax技术来加载数据。使用以前的采集方法,可能只能采集到加载之前的数据,重要的数据就抓不到了。和Ajax一样,动态HTML(DHTML)也是一系列用于解决网络问题的技术集合。...