前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Tor匿名网络的多ip爬虫

基于Tor匿名网络的多ip爬虫

作者头像
十四君
发布2019-11-28 17:15:35
1.8K0
发布2019-11-28 17:15:35
举报
文章被收录于专栏:UrlteamUrlteam

基于tor匿名网络的多ip爬虫.更换ip的方式有多种,其中tor这类型则适合ip更换次数不大,网页数据量也不大,但是又厌恶代理那天天失效的麻烦,则最简单快捷的便是使用tor在本机搭建一个出口端口,让需要更换ip的爬虫程序制定proxies指向的端口.简单而且快捷,可使用的ip池子总数1000左右,实际中有500左右可以使用,匿名性当然不用质疑了.

一.测试环境:

  • linux ubuntu 16.04
  • python 2.7
  • 主要包:requests   –    requesocks
  • 需要linux主机本身可以访问外网.自配V**或者是中国香港主机也可以是window的电脑装linux的虚拟机,然后window使用V**或者加速器等进行访问外国网站.

二.部署方式:

.. 2.1 环境准备 ….. 2.1.1 Linux ….. 2.1.2 Python ….. 2.1.3 Tor

══════════

2.1 环境准备 ──────

Linux 操作系统。Windows 部署没有验证。 2.1.1 Linux ╌╌╌╌╌╌╌╌╌╌╌

Linux 各种发行版本均可。以 Ubuntu 为例

2.1.2 Python

┌──── │ sudo apt-get install python-pip └──── ┌──── │ sudo pip install requests │ sudo pip install requesocks └────

╌╌╌╌╌╌╌╌╌ 2.1.3 Tor ┌──── │ sudo apt-get install tor │ sudo /etc/init.d/tor restart └──── 启动后socks监听9050端口。 ┌──── │ tor –hash-password mypassword └──── 生成你的密码,之后编辑/etc/tor/torrc加上

ControlPort 9051

HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C

让ControlPort监听9051端口,后边那个16:开头的hash就是上一步得到的。

┌──── │ /etc/init.d/tor restart └──── 重启下tor。

三. python示例代码

方法一:

使用  requesocks

代码语言:javascript
复制
import os
import requests
import requesocks
import time
 
url = 'http://api.ipify.org?format=json'
 
 
def getip_requests(url):
    print "(+) Sending request with plain requests..."
    r = requests.get(url)
    print "(+) IP is: " + r.text.replace("\n", "")                       
 
def getip_requesocks(url):
    print "(+) Sending request with requesocks..."
    session = requesocks.session()
    session.proxies = {'http': 'socks5://127.0.0.1:9050',
    'https': 'socks5://127.0.0.1:9050'}
    r = session.get(url)
    print "(+) IP is: " + r.text.replace("\n", "")
 
 
def main():
    print "Running tests..."
    getip_requests(url)
    getip_requesocks(url)
    os.system("""(echo authenticate '"mypassword"'; echo signal newnym; echo \
    quit) | nc localhost 9051""")
    time.sleep(2)
    getip_requesocks(url)
 
 
if __name__ == "__main__":
    main()

结果如图:

方法二

pip install PySocks

此可以使用requests的方式发送请求

代码语言:javascript
复制
import socket
import socks
import requests
 
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
print(requests.get('http://api.ipify.org?format=json').text)

结果是类似的.

要在程序内实现tor更换出口ip则调用下条指令即可

代码语言:javascript
复制
    os.system("""(echo authenticate '"mypassword"'; echo signal newnym; echo \
    quit) | nc localhost 9051""")

四.总结

最终,在已知的7种爬虫更换ip的方式中,tor算是部署成本最小的,只要你本机能够访问外国网站即可拥有500个ip供使用,并且能够保证相当高的匿名性.但是问题也是存在的,如果目标网站网页内容多,或者在抓取的时候使用phantomjs等方式就也一样是网速要求比较高这个时候就需要另外的方式了,比如adsl….ADSL爬虫届的换ip大招

额外的爬虫进阶技术文:

浏览器模拟操作:博客上传送门phantomjs   知乎上的传送门  https://zhuanlan.zhihu.com/p/24062137

爬虫分布式技术:博客上传送门redis   知乎上的传送门  https://zhuanlan.zhihu.com/p/24181367

相关代码均在github开源项目中.欢迎star和fork.也希望多多指教.

Anti-Anti-Spider

原创文章,转载请注明: 转载自URl-team

本文链接地址: 基于Tor匿名网络的多ip爬虫

Related posts:

  1. 使用phantomjs采集运用了强制跳转与页面等待等反爬技术的网站
  2. Scrapy笔记四 自动爬取网页之使用CrawlSpider
  3. SCRAPY学习笔记九 增量爬取url 使用 yield 的用法
  4. 破解某滑动验证码
  5. 爱奇艺腾讯搜狐优酷四大视频网站反爬虫技术研究
  6. 任意关键词下淘宝商品信息采集器,我拿下了信息却看不透套路
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-052,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.测试环境:
  • 二.部署方式:
  • 三. python示例代码
  • 结果如图:
  • 四.总结
    • Anti-Anti-Spider
      • Related posts:
      相关产品与服务
      验证码
      腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档