# 如何用正确姿势调戏蹭网者？

- URL: https://wuming.si/blog/759/
- Author: Aaron
- Published: 2014-08-30
- Language: zh-Hans
- Categories: Uncategorized
- Originally published at: http://blog.wo.ai/archives/759

**这篇文章本来是知乎回答的一个问题，但是由于本人五行缺勤奋，所以一直没写（其实是忘了=。=），下面是我的一个实验，如何通过squid调戏那些蹭网的人。没什么技术含量，请大牛不要笑话～**

声明：本实验仅作为技术分享，一把刀用来砍什么，由你决定。

先上效果：

![](http://blog.wo.ai/wp-content/plugins/wp-o-matic/cache/5a15efdad1_63918611gw1ejuhzb6utjj20j60asdj4.jpg)

![](http://blog.wo.ai/wp-content/plugins/wp-o-matic/cache/d4902e8035_63918611gw1ejuhzbrjb3j20j60as0v8.jpg)

是不是有点意思？  
这里还需要说明一件事情  
本文目的在于分享，采用的方式是国外的Pete大大的一种做法，效果不错，<http://www.ex-parrot.com/pete/upside-down-ternet.html> 但是这里不是重复造轮子，实在是Pete先僧写得过于简略，作为事件主角的squid居然被一笔带过，squid表示相当不爽(╯‵□′)╯︵┻━┻ 。如果可以通过上面的描述实现这个效果的，就不用往下看我的废话连篇了～如果你和我一样开始遇到过问题，那就跟着我走吧～  
先说一下大体的思路。既然是要对网页中的图片进行操作，那么我们首先需要把图片下载到本地，然后进行变换之后再输出到客户端机器上面，就实现了图片的翻转，水印，模糊等各种捉弄人的效果。当然功能绝不仅仅是这样就算了，更多功能，大家看完之后不妨多挖掘一下，我就不多废话了～  
好的，那么下面我们正式开始！

**0×01 实验环境**

我先说一下我的实验环境：

> 
>     主机：ubuntu
>     虚拟机：windowsXP（vbox）
>     软件：squid、apache

拓扑环境就不多废话了，我这边是host通过wlan0上网，虚拟机选择Host-Only模式，连接到主机的vboxnet0接口（默认的，我没修改）。

**0×02 系统配置**

这里，我们首先要把系统的网络转发功能打开，可以使用
    
    
    echo 1 > /proc/sys/net/ipv4/ip_forward

暂时启用，当然也可以修改sysctl.conf永久转发。  
然后，对虚拟机进行ip设定，我这里设置为192.168.56.21，子网掩码255.255.255.0

**0×03 软件设置**  
下面我们进行软件的设置。  
apache不多说了，你可以指定一个本地路径作为网络分享的地址，作用主要是发布修改后的图片，我这里的路径选择是/mydoc/test/  
接着是squid。  
关于squid的安装这里不是重点，网上有很多的教程，我们着重说配置。Squid的配置文件是在/etc/squid(3)下面的squid.conf。为了看起来能凸显得我的高冷气质（楼主自恋程度已经逆天…( ＿ ＿)ノ｜壁 ），着重配置的点我都已经写在上传的文件里面了，文末我会给出地址，大家可以看一下。  
这里之所以说squid是关键，是因为我们主要使用了squid的redircetor的功能，即我们常说的重定向器功能。重定向器可以将收到的url进行改写重定向，而且支持python、perl、C等等语言写的重定向脚本（程序），功能还是很强大的，这里感兴趣的同学不妨玩玩～这里贴上《squid权威指南》中关于squid的详细描述，有问题可以到这里查阅：http://zyan.cc/book/squid/chap11.html  
然后，我们把脚本文件放在配置文件中指定的位置，我这里是放在了/etc/squid3/下面，这里需要注意的是文件的权限问题，因为squid默认运行权限是squid用户，隶属于squid组（squid3是proxy用户，proxy组），所以如果squid没有权限执行脚本文件的时候是会报错的。这里的脚本文件我直接使用了Pete大大给出的perl脚本进行了一点点修改，可能是因为Pete直接从本地测试的，所以脚本有一点点的小问题，大家也可以从我给出的网址上下载。  
然后我们配置虚拟机的代理。因为这里我没有用iptables进行流量转发，为了方便，直接配置了浏览器的代理配置，这里代理IP 192.168.56.1：8080，当然大家也可以使用iptables进行转发，这样就可以了。  
最后我们重启squid。
    
    
    sudo service squid restart

(squid3的服务名称是squid3)，这里注意对于squid的任何操作一定要记得用sudo执行，否则会报错。

**0×04 检验效果**  
这个时候，我们打开虚拟机，输入http://www.baidu.com，就应该可以看到baidu的logo是反向的了，打开更多网页试试吧～是不是很好玩？23333。

![](http://blog.wo.ai/wp-content/plugins/wp-o-matic/cache/1c844e7169_63918611gw1ejuhzc6f1zj20j60asmz8.jpg)

当然，脚本只是使用了flip选项，当然这里不建议使用过于复杂的命令，会使浏览器响应过于慢。关于imagemagic的更多的效果可以从网上查阅，是一个相当强大的命令行图片控制软件。

**0×05 更多猜想**  
实验已经成功，那么我们说回到我们今天的MITM主题上面。有的同学或许会问：你得得得得说这么多，怎么应用啊？我这里提供一个小的方式，抛砖引玉：  
可以买一树莓派，买一个usb上网卡，一张中国联通或者中国电信的卡，再买一个无线网卡，用airport建个无线信号，买个电源，装上linux配置好squid，当然还可以打开sniff，配好接收数据的服务器。。

剩下的就是：背好你的背包，默默走到斯达巴克斯，点一杯咖啡，用吸管慢慢品尝这份苦茗，望向窗外花坛那朵玫瑰，心里静静地想着那个TA。。。  
说道这里，大家可能会想到菠萝，其实因为菠萝使用的是openwrt的精简系统，很多东西不可以使用，而且配置比起树莓派低了一些，大批量的图片操作很容易让CPU狂飙，自带的MITM最近貌似也不能用了？不过还是推荐Geek们自行动手～

如果有更多的想法，我们一起交流。

**0×06 注意事项**  
因为我在做实验的过程中也遇到了很多问题，这里贴出一些常见的问题，大牛略过吧～:)  
1、注意接收图片文件夹的权限和隶属于的用户，最好是能与squid用户相同的用户组。如果不是，可以使用chown进行修改。例：chown proxy.proxy xxx  
2、注意脚本文件的权限。脚本文件必须是可以被squid用户执行的。  
3、注意log文件的权限，关于log文件一共有三个，位于/var/log/squid3/下，分别是cache.log、store.log、access.log，这三个文件必须是可写的，同时也可以直接用chown改变用户所有权限。  
4、遇到更多虚拟机打不开网页的问题，大家可以查阅/var/log/squid3/cache.log，这里会给出很详细的说明。  
这里我能想到的暂时就这么多了，再有什么其他问题我们可以一起交流，我这里有一把肥皂。。。

**0×07 写在最后**  
最后，也没什么好说的了，附上链接：<https://github.com/linvex/MITM-squid/tree/master>

上几张图吧～

![](http://blog.wo.ai/wp-content/plugins/wp-o-matic/cache/a37a88319b_63918611gw1ejuhzcp1bkj20j60astdx.jpg)

![](http://blog.wo.ai/wp-content/plugins/wp-o-matic/cache/8a1ba0a35c_63918611gw1ejuhzdqu24j20j60asq72.jpg)

[如何用正确姿势调戏蹭网者？](http://blog.jobbole.com/76247/)，首发于[博客 – 伯乐在线](http://blog.jobbole.com)。
