додатковий трафік з Google Images

В свій час писав автоматизацію для наповнення інтернет-магазину, яка використовувала пошук в "Google Images". І час від часу натрапляв на сайти, де знаходився потрібний мені малюнок, але я не встигав на нього клікнути чи то скопіювати шлях, як відбувався повний перехід на вищезгаданий сайт з фреймів "Google Images". І перехід не на потрібну мені сторінку, де є малюнок, а в корінь сайту. Велика незручність для кінцевого користувача і додатковий трафік для власнику сайту. Про корисність цього трафіку можна довго сперечатись, але і немає страху втратити цього випадкового відвідувача :)
Технічний момент. В head'і прописуємо:
<script type='text/javascript'>
    if (parent.frames.length > 0) {.
        //parent.location.href = location.href;
        parent.location.href = 'http://t-v.te.ua';
    }
</script>

Закоментований варіант - перехід на сторінку де є малюнок, розкоментований - в корінь сайту.

split на bash'і

snat=(
    55410:192.168.10.99:80
    55415:192.168.10.199:80
    55411:192.168.20.99:80
    55412:192.168.30.199:80
    55413:192.168.24.99:80
    55414:192.168.20.199:80
)

for i in ${snat[@]}; do
    set -- "$i"
    IFS=":"; declare -a Array=($*)

    iptables -A FORWARD -p tcp -s ${Array[1]} --sport ${Array[2]} -j ACCEPT
    iptables -A FORWARD -p tcp -d ${Array[1]} --dport ${Array[2]} -j ACCEPT
    iptables -t nat -A PREROUTING -p tcp -i eth0 --dport ${Array[0]} -j DNAT --to-destination ${Array[1]}\:${Array[2]}

    echo "${Array[@]}"
done
п.с. збоченська мова

Багатопотокова проксі-чекалка на Python

#!/usr/bin/python

import Queue
import threading
import MySQLdb
import urllib2
import time

class DB:
    conn = None
    def connect(self):
        self.conn = MySQLdb.connect(host = "x.y.z.q", user = "user", passwd = "password", db = "database")
    def query(self, sql):
        try:
            cursor = self.conn.cursor()
            cursor.execute(sql)
        except (AttributeError, MySQLdb.OperationalError):
            self.connect()
            cursor = self.conn.cursor()
            cursor.execute(sql)
        return cursor

proxyList = []

global db
db = DB()
curr = db.query("SELECT url FROM proxy")
result_set = curr.fetchall ()
for row in result_set:
    proxyList.append(row[0])

queue = Queue.Queue()

class ThreadUrl(threading.Thread):
    def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue

    def run(self):
        while True:
            host = self.queue.get()
            try:
                proxy_handler = urllib2.ProxyHandler({'http':host})
                opener = urllib2.build_opener(proxy_handler)
                opener.addheaders = [('User-agent','Mozilla/5.0')]
                urllib2.install_opener(opener)
                req = urllib2.Request("http://www.proxylists.net/proxyjudge.php")
                sock=urllib2.urlopen(req, timeout= 7)
                rs = sock.read(5000)
                if 'ProxyLists.Net - Proxy judge' in rs:
                    print "ok %s" % host
                    db.query("UPDATE proxy SET checked=NOW() WHERE url = '%s' " % host)

            except:
                print "err %s" % host
                db.query("DELETE FROM proxy WHERE url LIKE '%s' " % host)

            self.queue.task_done()

def main():
    for i in range(20):
        t = ThreadUrl(queue)
        t.setDaemon(True)
        t.start()

    for host in proxyList:
        queue.put(host)

    queue.join()

main()