python - 对 Incapsula 保护的网站进行网络抓取?
问题描述
我需要从这里的网站上抓取数据。这受到 Incapsula 的保护。我已经完成了两种方法,并且还使用了 Stack Overflow 用户提供的技术。
方法 1:
from incapsula import IncapSession
headers = {'Host': 'www.vignanam.org',
'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.540.0 Safari/534.10',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'keep-alive',
'Cookie': 'visid_incap_1642409=B+YoelHCSKKN5z/Phs0zXCsF9VsAAAAAQUIPAAAAAACXaWvcNDXdMzcOky/SvffB; incap_ses'
'_715_1642409=kyFvSyJuuBVpNuh+aTHsCSsF9VsAAAAAKV6TIWTPSZmb+mOZWeuNHA==',
'Upgrade-Insecure-Requests': '1'}
session = IncapSession()
response = session.get('http://www.vignanam.org/index.htm#&panel1-1', headers=headers, bypass_crack=True)
print response.text
方法 2:
from mechanize import Browser
from bs4 import BeautifulSoup
browser = Browser()
browser.open('https://www.incapsula.com/blog/how-incapsula-protects-against-data-leaks.html')
print browser.response()
soup = BeautifulSoup(browser.response().read(), features='html5lib')
print soup
两种方法都产生相同的结果。
结果/输出
<html>
<head>
<META NAME="robots" CONTENT="noindex,nofollow">
<script src="/_Incapsula_Resource SWJIYLWA=5074a744e2e3d891814e9a2dace20bd4,719d34d31c8e3a6e6fffd425f7e032f3"> </script>
<body>
</body>
</html>
如何打破这个并从那里刮取数据?有没有其他编程语言可以克服这个问题?
解决方案
这个 :
import requests
requests.get('http://www.vignanam.org/index.htm#&panel1-1').text
对我来说很好。
我没有看到任何类型的封装保护,也没有阻止我的请求。
(curl http://www.vignanam.org/index.htm#&panel1-1
也在 bash 中工作)
返回:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml" itemscope itemtype="http://schema.org/Organization">\n<head>\n<title>Vaidika Vignanam - Vedic Chants, Siva, Vishnu, Devi\nStotrams, Annamayya, Tyagaraja, Ramadasa Keerthanas in Sanskrit, Hindi,\nTelugu, Tamil, Kannada, Malayalam, Gujarati, Bengali and Oriya</title>\n<link rel=stylesheet type="text/css" href="css/vignanam.css"/>\n<link rel=stylesheet href="css/anythingslider.css" type="text/css" media=screen />\n<link type="text/css" href="css/jquery-ui-1.8.12.custom.css" rel=Stylesheet />\n<link rel=stylesheet href=aqtree3clickable.css />\n<link rel=stylesheet href="css/glowtabs.css" type="text/css" media=screen />\n<meta content="text/html; charset=utf-8" http-equiv=Content-Type />\n<meta name=keywords content="vedas, vedic chants, shiva stotrams, vishnu stotrams, \n\t\tdevi ......
推荐阅读
- unit-testing - 数据库单元测试 - 如何模拟过程中的时间
- python - 在熊猫中跟踪具体的时间段
- python - 在文本文件中搜索变量,获取数据并为其分配一个变量(python)
- python - 在我冻结游戏之前,第二个表面不会出现在屏幕上
- c++ - 如何将 TrieNodes 子节点的所有元素初始化为 null
- c# - 不同子属性的通用位置
- java - 在 Maven 项目中的 pom.xml 中找不到依赖项错误
- swashbuckle.aspnetcore - Swagger5.0 更新不使用 Swashbuckle.AspNetCore.Swagger 指令引发构建错误
- java - Java Doc -overview 选项(使用 Eclipse)
- wordpress - Divi 侧边栏工作正常 博客上的主页问题