让scrapy变相支持socks代理和代理池

上一篇文章中写了如何让scrapy支持HTTP代理

不过scrapy默认是不支持socks代理的,有时候纯HTTP代理又容易被G F W拦截,采集国外被屏蔽的网站又需要用到代理,好吧,能力是被需求逼出来的。

下面说一个解决方案

在美国或香港部署一台linux vps

以debian为例

安装必要组件

apt-get install build-essential autoconf libtool libssl-dev gcc -y

安装git

apt-get install git -y

下载shadowsocks-libev源码包并编译

git clone https://github.com/madeye/shadowsocks-libev.git

cd shadowsocks-libev

./configure

make && make install

运行shadowsocks

/usr/local/bin/ss-server -s 0.0.0.0 -p 端口 -k 密码 -m 加密方式 &

本地服务器(可以是windows或linux)

去http://dl.chenyufei.info/shadowsocks/

下载对应系统的shadowsocks客户端

另外shadowsocks客户端可以指定多个服务器,相当于做了一个代理池

最关键的步骤来了,就是将socks代理转换成http代理

这里推荐用3Proxy,主页在www.3proxy.ru。

3Proxy支持windows和linux等各种平台。windows下直接下载安装即可,Linux下面需要自己编译

3Proxy的典型配置文件

nscache 65536

timeouts 1 5 30 60 180 1800 15 60

daemon

#service

#external ip

internal 127.0.0.1

auth iponly

allow 127.0.0.1

parent 1000 socks5+ 127.0.0.1 9999

proxy -n -a -p1984

127.0.0.1即上一级socks5代理服务器,9999为代理服务器端口

1984为监听端口

更详细的设置可参考这篇文章

http://blog.sunshine-wang.info/?p=20

或阅读官方文档

最后将scrapy的HTTP代理设置为http://127.0.0.1:1984

就可以了

参考文档

http://igfw.net/archives/947

http://www.ouvps.com/?p=464

时间: 2024-10-08 05:50:39

让scrapy变相支持socks代理和代理池的相关文章

Scrapy爬虫框架补充内容三(代理及其基本原理介绍)

前言:(本文参考维基百科及百度百科所写) 当我们使用爬虫抓取数据时,有时会产生错误比如:突然跳出来了403 Forbidden 或者网页上出现以下提示:您的ip访问频率太高 或者时不时跳出一个验证码需要你输入,这是由于网站采取了反爬虫措施:服务器会检查某个固定的ip在单位时间内请求的次数,如果发现请求过于频繁就会封掉你的ip,就像你一直找人办事,突然有一天帮你办事的人不乐意了,就对你说滚!(即我们的ip被封了!),这里我们引入一个全新的概念:代理 1.What is 代理? 答:代理也叫代理服务

【SSH系列】静态代理&&动态代理

从设计模式说起 代理模式是二十三中设计模式中的一种,代理模式就是指由一个代理主题来操作真实的主题,真实的主题执行具体的业务操作,而代理主题负责其她相关业务,简而言之,代理模式可以由以下三个部分组成: a.抽象角色:通过接口或抽象类声明真实角色实现的业务方法. b.代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作. c.真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用.第一次接触代理模式的是在学习大话设计模式的时候,首先

nginx正向代理反向代理负载均衡

1.1  Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度.新浪.网易.腾讯等. 负载均衡是nginx最流行最出名的功能,做为一款分发软件,

设计模式-代理/动态代理

最近一段时间在看spring的源码,发现里面大量的使用的代理.代理:就是用代理类实现委托类的一些功能和附加的预处理功能(包括消息过滤,日志等).代理(proxy)模式:指目标对象给定代理对象,并由代理对象代替真实对象控制客户端对真 实对象的访问, java的代理分为静态代理和动态代理,java 对动态代理有很好的支持,提供了 InvocationHandler接口和 Proxy 类. 1.动态代理和静态代理的区别 静态代理,代理类要实现被代理接口的所有的方法.  动态代理是利用java反射机制,

【实战】Squid 缓存服务器 之 传统代理 + 透明代理

目录: 1· Squid代理的概述原理2· 代理的基本类型3· Squid 服务脚本4· 构建代理服务器(传统代理.透明代理)5· 总结 Squid代理的概述原理 1)代理的工作机制 1.什么是 Squid ? Squid是一个高性能的代理缓存服务器,Squid支持FTP.gopher.HTTPS和HTTP协议.和一般的代理缓存软件不同,Squid用一个单独的.非模块化的.I/O驱动的进程来处理所有的客户端请求. 2·缓存的工作原理 squid 是工作在应用层的代理服务软件,squid 主要提供

爬虫1 爬虫介绍, requests模块, 代理(正向代理,反向代理), 爬梨视频, 自动登录网站, HTTP协议复习

HTTP协议复习 参考:https://www.cnblogs.com/an-wen/p/11180076.html 1爬虫介绍 # 1 本质:模拟发送http请求(requests)---->解析返回数据(re,bs4,lxml,json)--->入库(redis,mysql,mongodb) # 2 app爬虫:本质一模一样 # 3 为什么python做爬虫最好:包多,爬虫框架:scrapy:性能很高的爬虫框架,爬虫界的django,大而全(爬虫相关的东西都集成了) # 4 百度,谷歌,就

Linux上配置HTTP代理及代理例外

在Ubuntu , Debian或者Mint: $ sudo vi /etc/environment http_proxy="http://proxy.com:8000" no_proxy="127.0.0.1, localhost, *.cnn.com, 192.168.1.10, domain.com:8080" 在CentOS的,Fedora或RHEL : $ sudo vi /etc/profile.d/proxy.sh export http_proxy=

静态代理$动态代理

什么是静态代理? 静态代理就是代理模式,给真实类做了个增强的方法 比如你有个房源,你还有代理人那么这个代理人就会给你的怎是房源的基础上,夸大点让你的房源增加人脉... 就要用到增强方法,就在代理类中给你的方法增强 //静态代理模式public class Progects {/* @Test public void dd() {//真实代理 Subject jk=new Real(); //代理对象 Proxy hj=new Proxy(); //调度代理对象(jk)方法增强 hj.setSub

使用代理创建连接池 proxyPool

配置文件properties 1 url=jdbc:mysql://127.0.0.1:3306/mine?characterEncoding=UTF-8 2 user=root 3 password=1234 4 driverClass=com.mysql.jdbc.Driver 主要代码 1 package JDBCUtils; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.lang.r