代理

正向代理、反向代理、透明代理

蓝咒 提交于 2019-12-07 11:46:32
正向代理 这个想必大家都比较清楚了,翻墙就是正向代理的经典例子。通俗的说就是: A用户无法访问twitter,但是我能访问B服务器,而B服务器可以访问twitter。于是我访问B服务器,告诉它”嗨,伙计,我要访问twitter“,B服务器收到请求后,去访问twitter,twitter把响应信息返回给B服务器,B服务器再把响应信息返回给A。这样,通过B代理服务器,就实现了翻墙。 所以说,正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标(原始服务器),然后代理服务器向原始服务器转发请求并将获得的内容返回给客户端。客户端必须要进行一些设置才能使用正向代理。[注意,这里面指定目标、客户端必须设置是正向代理和反向代理的区别之处] 反向代理 反向代理很大情况是为了保护原始服务器。 比如现在服务器A域名为www.sina.com.cn,黑客H通过技术手段想去攻击,那服务器A可能就会挂掉。但如果我在H和A之间搞一个代理服务器C冒充原始服务器,那么,对黑客而言,C服务器就是A服务器。即使他真的把C服务器搞挂了,对A服务器也不会有影响。实现起来也很简单,就是在服务器A设置一个防火墙,保证只有C服务器才能访问A。其他任何请求都会被拒绝。这样就完成了A服务器的隐藏。服务器C实现的功能就叫做反向代理。 所以说,反向代理是和正向代理相反

pip 使用http代理 与 SSL Socks转http的方法

会有一股神秘感。 提交于 2019-12-05 23:05:37
pip 使用http代理 与 SSL Socks转http的方法 不大知道有哪些好的下载快的镜像,在公司的时候用pip安装很多软件都连接超时。很多软件使用SSH Socks又非常不方便,所以就用了以下办法,可以方便把Socks代理转换成http代理,让python使用代理更方便了。 Cenos只找到源代码安装的办法:下载privoxy tar -zxvf xxx make sudo make -s install USER=xx GROUP=xx 配置: vim /usr/local/etc/privoxy/config #(此为默认值) listen-address: 127.0.0.1:8118 #把SSL Socks 代理的7999桥接到privoxy。注意后面的小点。 forward-socks5 / 127.0.0.1:7999 . #使用SSH ssh user @host -D 127.0.0.1:7999 #打开privoxy /usr/local/sbin/privoxy 测试privoxy 打开浏览器,把代理设置为http 8118 设置命令行的代理 #修改.bashrc,当然如果你想让你的python程序也使用http代理,可以设置一个全局的http_proxy="127.0.0.1:8118"。 alias pip='http_proxy="127.0.0

使用ssh正向连接、反向连接、做socks代理的方法

。_饼干妹妹 提交于 2019-12-04 09:45:12
使用ssh正向连接、反向连接、做socks代理的方法 Submitted by admin on Sat, 12/01/2012 - 20:54 Linux Network 来源地址: http://dzmailbox.blog.163.com/blog/static/120534385201232642637847/ 【原创】使用ssh正向连接、反向连接、做socks代理的方法 最近才发现ssh有多么的强大! 在网上搜了半天,发现大多数人都是一瓶子不满的水平,浅尝辄止。就没有几个人有点儿科学研究的精神吗?为啥不把它搞明白呢? 当然,相信有不少人是很明白的,但是不愿意写博文来公开。其实这样大可不必,独乐乐不如众乐乐,何必那么小肚鸡肠? 1、用ssh做正向连接 啥叫正向连接?就是client连上server,然后把server能访问的机器地址和端口(当然也包括server自己)镜像到client的端口上。 命令: ssh -L [客户端IP或省略]:[客户端端口]:[服务器侧能访问的IP]:[服务器侧能访问的IP的端口] [登陆服务器的用户名@服务器IP] -p [服务器ssh服务端口(默认22)] 其中,客户端IP可以省略,省略的话就是127.0.0.1了,也就是说只能在客户端本地访问。服务器IP都可以用域名来代替。 举例说明: 你的IP是192.168.1.2

nginx前端代理tomcat取真实客户端IP

99封情书 提交于 2019-12-03 14:04:21
使用Nginx作为反向代理时,Tomcat的日志记录的客户端IP就不在是真实的客户端IP,而是Nginx代理的IP。要解决这个问题可以在Nginx配置一个新的Header,用来存储$remote_add,然后再Tomcat获取记录这个值。 新增nginx配置。 server { listen 80; server_name www.xxxxx.com; location / { proxy_pass http://IP:8080/; proxy_set_header X-Real-IP $remote_addr; } } 其实就是新增了一个名为X-Real-IP值为真实客户端IP的头信息。 可以参见: http://wiki.nginx.org/NginxHttpProxyModule 修改tomcat日志配置:(<host></host>中间) <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="tomcat_access_log." suffix=".txt" pattern="%a %r %t %{X-Real_IP}i" resolveHosts="false"/> 可以参见: http://www.docjar.org/docs/api/org

在spring中获取代理对象代理的目标对象工具类

↘锁芯ラ 提交于 2019-12-03 12:38:30
昨天晚上一哥们需要获取代理对象的目标对象,查找了文档发现没有相应的工具类,因此自己写了一个分享给大家。能获取JDK动态代理/CGLIB代理对象代理的目标对象。 问题描述:: 我现在遇到个棘手的问题,要通过spring托管的service类保存对象,这个类是通过反射拿到的,经过实验发现这个类只能反射取得sservice实现了接口的方法,而extends类的方法一律不出现,debug后发现这个servie实例被spring替换成jdkdynmicproxy类,而不是原始对象了,,它里面只有service继承的接口方法,而没有extends 过的super class方法,怎么调用原生对象的方法!!!!! 用托管的spring service类调用getClass().getName()方法,发现输出都是$proxy43这类东西!! 通过此种方式获取目标对象是不可靠的,或者说任何获取目标对象的方式都是不可靠的,因为TargetSource,TargetSource中存放了目标对象,但TargetSource有很多种实现,默认我们使用的是SingletonTargetSource ,但还有其他的比如 ThreadLocalTargetSource 、 CommonsPoolTargetSource 等等。 这也是为什么spring没有提供获取目标对象的API。 Java代码 import

网络机器人的识别与攻防的经典案例(也即爬虫与反爬虫的经典案例)

我只是一个虾纸丫 提交于 2019-12-01 02:12:06
本文我们介绍一个网络机器人的识别与攻防的经典案例(也即爬虫与反爬虫的经典案例)。使用到的 代码见本人的 superword 项目: https://github.com/ysc/superword/blob/master/src/main/java/org/apdplat/superword/tools/ProxyIp.java 我们的目的是要使用机器人自动获取站点 http://ip.qiaodm.com/ 和站点 http://proxy.goubanjia.com/ 的免费高速HTTP代理IP和端口号。 不过他们未对机器人进行识别,如通过如下代码就可以获取网页内容: public static void main(String[] args) { try { String url = "http://proxy.goubanjia.com/"; HttpURLConnection connection = (HttpURLConnection)new URL(url).openConnection(); connection.setConnectTimeout(10000); connection.setReadTimeout(10000); connection.setUseCaches(false); BufferedReader reader = new

Nginx 利用代理转发请求实例

独自空忆成欢 提交于 2019-11-29 07:51:28
我们 米扑科技 的业务遍布全球,有时国外的客户无法访问我们搭建在国内的服务,这就要求我们在国外服务器上搭建一个代理转发服务,用户请求国外服务器的域名,然后代理转发到国内,处理请求后返回结果给国外的客户。Nginx 不仅可以实现负载均衡,还可以实现反向代理转发,非常适合我们的使用场景,因此我们 米扑科技 采用 Nginx 利用代理转发请求实例。 米扑博客原文: Nginx 利用代理转发请求实例 Nginx 利用代理转发请求实例 nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。 nginx 反向代理官方文档: NGINX REVERSE PROXY 当在一台主机上部署了多个不同的web服务器,并且需要能在80和443端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能,用 nginx 在80端口监听所有请求,并转发给443端口,再由443端口统一依据转发规则转发到对应的国内web服务器上。 示例: proxy.mimvp.com 域名在阿里云备案,部署在国内的北京阿里云服务器 proxy.mimgu.cn 域名在腾讯云备案,部署在国外的新加坡腾讯云服务器(国外域名可不备案) 1. 国内北京阿里云服务器 ( proxy.mimvp.com ) vim mimvp_proxy.conf server { listen 80;   server

Spring事务——使用TransactionProxyFactoryBean创建事务代理

北城以北 提交于 2019-11-26 21:29:53
Spring同时支持编程式事务策略和声明式事务策略,大部分时候,我们都推荐采用声明式事务策略。使用声明式事务策略的优势十分明显: 声明式事务能大大降低开发者的代码书写量,而且声明式事务几乎不影响应用的代码。因此,不论底层事务策略如何变化,应用程序都无需任何改变 应用程序代码无需任何事务处理代码,可以更专注于业务逻辑的实现 Spring可对任何POJO的方法提供事务管理,而且Spring的声明式事务管理无需容器的支持,可在任何环境下使用 EJB的CMT无法提供声明式回滚规则;而通过配置文件,Spring可指定事务在遇到特定异常时自动回滚。Spring不仅可在代码中使用setRollbackOnly回滚事务,也可在配置文件中配置回滚规则 由于Spring采用AOP的方式管理事务,因此,可以在事务回滚动作中插入用户自己的动作,而不仅仅是执行系统默认的回滚 本文主要介绍Spring中声明式事务管理的使用。 在Spring1.X中,声明式事务使用TransactionProxyFactoryBean来配置事务代理Bean。正如它的类名所暗示的,它是一个专门为目标Bean生成事务代理的工厂Bean。既然 TransactionProxyFactoryBean产生的是事务代理Bean,可见Spring的声明式事务策略是基于Spring AOP的。 每个

使用爬虫爬取网站,常用的解决IP被封的办法

落花浮王杯 提交于 2019-11-26 15:38:25
我们经常在开发的过程中,会编写一些爬虫爬取特定网站的数据,为自己所用。但是问题来了,爬虫经常会被目标网站封掉IP,这个时候我们就需要一些额外的手段来解决这种问题了,下面是一些常见的解决办法。 方法1. 1.IP必须需要明确而且正确,这是前提条件。如果有条件,其实可以跟机房多申请外网IP。 2.在有外网IP的机器上,部署代理服务器。 3.使用轮训替换代理服务器来访问想要采集的网站。 好处: 1.程序逻辑变化小,只需要代理功能。 2.根据对方网站屏蔽规则不同,你只需要添加更多的代理就行了。 3.就算具体IP被屏蔽了,你可以直接把代理服务器下线就OK,程序逻辑不需要变化。 方法2. 有小部分网站的防范措施比较弱,可以伪装下IP,修改X-Forwarded-for(貌似这么拼。。。)即可绕过。 大部分网站么,如果要频繁抓取,一般还是要多IP。我比较喜欢的解决方案是国外VPS再配多IP,通过默认网关切换来实现IP切换,比HTTP代理高效得多,估计也比多数情况下的ADSL切换更高效。 方法3. ADSL + 脚本,监测是否被封,然后不断切换 ip 设置查询频率限制 正统的做法是调用该网站提供的服务接口。 方法4. 8年多爬虫经验的人告诉你,国内ADSL是王道,多申请些线路,分布在多个不同的电信区局,能跨省跨市更好,自己写好断线重拨组件,自己写动态IP追踪服务,远程硬件重置(主要针对ADSL猫