然而 Scrapy 不支撑这种认证方法,须要将认证信息 base64 编码后,参加 Headers 的 Proxy-Authorization 字段:
import base64
- import base64
- # Set the location of the proxy proxy_string = choice(self._get_proxies_from_file('proxies.txt')) # user:pass@ip:port proxy_items = proxy_string.split('@') request.meta['proxy'] = "http://%s" % proxy_items[1] # setup basic authentication for the proxy user_pass=base64.encodestring(proxy_items[0]) request.headers['Proxy-Authorization'] = 'Basic ' + user_pass
动态加载
如今越来越多的网站应用 ajax 动态加载内容,这时刻可以先朝长进步 ajax 请求分析一下,有可能根据 ajax 请求构造出响应的 API 请求的 URL 就可以直接获取想要的内容,平日是 json 格局,反而还不消去解析 HTML。
然而,很多时刻 ajax 请求都邑经过后端鉴权,不克不及直接构造 URL 获取。这时就可以经由过程 PhantomJS+Selenium 模仿浏览器行动,抓取经由 js 衬着后的页面。具体可以参考:Scrapy+PhantomJS+Selenium 动态爬虫
须要留意的是,应用 Selenium 后,请求不再由 Scrapy 的 Downloader 履行,所以之前添加的请求优等信息都邑掉效,须要在 Selenium 中从新添加
- headers = {...}
- for key, value in headers.iteritems(): webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.{}'.format(key)] = value
- driver = webdriver.PhantomJS(executable_path='/usr/local/bin/phantomjs')
【编辑推荐】
- 应对数据中间的能源效力挑衅
- 深刻懂得HDFS工作机制
- 设计爬虫Hawk背后的故事
- 大年夜范围爬虫流程总结
- Python法度榜样中不合的重启机制
推荐阅读
1. 分化思路分化思路还有一个好处是可以赞助运营更好的分工,进行组织架构的优化调剂。使员工更专业,更聚焦到某一块营业上,大年夜而培养出一个细分本能机能的专家,当每个细分本能机能都>>>详细阅读
本文标题:爬虫进阶:反爬策略的应对机制
地址:http://www.17bianji.com/lsqh/35216.html
1/2 1