Python

From Encyclopedia Dramatica

Jump to: navigation, search
Oh those crazy Germans!  Well, at least they got the right phylum.
Oh those crazy Germans! Well, at least they got the right phylum.

A chafing and slow scripting language, used only by mathematicians not in-the-know, and skript kiddies for writing blog-chafing scripts. Also good fo SSHSSSSSSSS HSSSSSSSSSSSSSSSS HSSSSSSSSSSSS HSSSS HSSSSSSSSSSSS HSS HSS HSSSSS HSSS HSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS.

Python is the invoker of a fuckload of butthurt. Nobody in the whole fucking world uses Python anymore except sand niggers and the occasional Ron Paul. Python has been known for it's complicated coding and batshit crazy errors that, when translated from moonspeak to English says something about how you can't program because of a "firewall" problem or a "network ear fuck". Those problems usually encourage you to just not fight it and play along because upon further investigation, you'll be mind-fucked with frustration the same way you get eye-fucked watching old guys having an orgy.


Below: A Python script that chafes the ever-living shit out of Slashdot.

This is the code for a very basic Python "Hello World" program:

import getopt
from os import getpid
from random import choice, randrange
import re
from string import lower, letters
from sys import argv, exit
import threading
from time import sleep
import urllib

numthrds = 5

##############################################################################
#   FUNCTION DEFINITIONS                                                     #
##############################################################################

def errmsg(msg):
	from sys import stderr
	stderr.write(str(getpid()) + ': ' + msg + "\n")

def getformkey(str):
	r = re.search('<INPUT.*NAME="formkey" VALUE="[0-9a-zA-Z]+"', str)
	if r:
		return re.search('[0-9a-zA-Z]{10}', r.group(0)).group(0)
	else:
		return ''

def rndchars(x):
	str = ""
	for i in range(randrange(x, x + 2)):
		str = str + lower(choice(letters))
	return str

def rndsubject():
	s = ''
	for i in range(4):
		s += rndchars(6)

###################
# Do getopt stuff #
###################
msgfile = 'msg.txt'
opt_d = 0
opt_l = 0
proxfile = 'proxies.txt'
purl = 'http://slashdot.org/comments.pl'
sid = '20721'

try:
	opts, args = getopt.getopt(argv[1:], 'df:hlp:s:u:')
except getopt.GetoptError, msg:
	stderr.write(argv[0] + ': ' + str(msg) + "\n")
	exit(3)

for c, optarg in opts:
	if c == '-d':
		opt_d = 1
	if c == '-f':
		msgfile = optarg
	if c == '-h':
		print 'pystorm: ' + argv[0] + ' [OPTION]...'
		print 'Perform automated comment posting on a Slashcode blog.\n'
		print '  -d         remove nonworking proxies from internal list'
		print '  -f [FILE]  read HTML messages from [FILE]'
		print '  -h         display this usage help'
		print '  -l         just display list of HTTP proxies collected and exit'
		print '  -p [FILE]  read list of HTTP proxies from [FILE], one per line'
		print '  -s [NUM]   post to the story with ID [NUM]'
		print '  -u [URL]   use [URL] as the comment posting script'
	if c == '-l':
		opt_l = 1
	if c == '-p':
		proxfile = optarg
	if c == '-s':
		sid = optarg
	if c == '-u':
		purl = optarg

if proxfile == '':
	errmsg('no proxy file given')
	exit(10)

##############################
# Read proxies into an array #
##############################

proxies = []
num_proxies = 0

try:
	f = open(proxfile, 'r')
except:
	errmsg("an error occurred when trying to open " + proxfile)
	exit(5)

for x in f.readlines():
	proxies.append('http://' + x.strip())
	num_proxies += 1

f.close()
if num_proxies == 1:
	errmsg('read in 1 proxy')
elif num_proxies > 0:
	errmsg('read in ' + str(num_proxies) + ' proxies')
else:
	errmsg('couldn\'t read in proxies from ' + proxfile)
	exit(7)

if opt_l > 0:
	for n in proxies:
		print n
	exit(0)

if purl == '':
	errmsg('no post URL given')
	exit(11)

if sid == '0':
	errmsg('no SID given')
	exit(9)

if msgfile == '':
	errmsg('no message file given')
	exit(4)

########################################
# Read messages/subjects into an array #
########################################

msgs = []
subjects = []
num_msgs = 0

try:
	f = open(msgfile, 'r')
except:
	errmsg('an error occurred when trying to open ' + msgfile)
	exit(2)

i = 0

msgs.append('')
for x in f.readlines():
	if x == "%\n":
		i = 0
		msgs.append('')
		num_msgs += 1
	else:
		if i == 0:
			msgs[num_msgs] = ''
			subjects.append(x)
			i = 1
		else:
			msgs[num_msgs] += x
num_msgs += 1

f.close()
if num_msgs == 1:
	errmsg('read in 1 message')
elif num_msgs > 0:
	errmsg('read in ' + str(num_msgs) + ' messages')
else:
	errmsg('couldn\'t read in messages from ' + msgfile)
	exit(6)

class SpamThread(threading.Thread):

	def run(self):

		global opt_d

		while 1:

			self.proxy = choice(proxies)
			self.opendev = urllib.FancyURLopener({'http': self.proxy})
			self.url = purl + '?sid=' + sid + '&op=Reply'

			# choose a message
			self.i = randrange(0, num_msgs)
			try:
				self.subject = subjects[self.i].strip()
			except:
				self.subject = rndsubject()
			self.msg = msgs[self.i] + '\n' + rndchars(2)

			# get rid of that "Re:" shit in the subject
			if self.subject[0:3] == 'Re:':
				self.subject = self.subject[3:]

			# get initial post form
			try:
				#f = self.opendev.open(self.url, urllib.urlencode({}))
				f = self.opendev.open(self.url)
			except IOError:
				print self.proxy, "couldn't open post form"
				continue
			try:
				str = f.read(50000)
			except:
				print self.proxy, "got no data"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue

			if str.find('<TITLE>BANNED!</TITLE>') != -1:
				print self.proxy, "is banned"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue

			# get formkey
			formkey = getformkey(str)
			if formkey != '':
				print self.proxy, "got 1st formkey " + formkey
			else:
				if str.find('<FONT COLOR="#000000">i have a big cock') != -1:
					errmsg('This story has been archived')
					exit(8)
				print "Proxy", self.proxy, "couldn't get 1st formkey"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue

			# setup POST request
			self.par = urllib.urlencode(
			{
			'sid': sid,
			'pid': '0',
			'formkey': formkey,
			'postersubj': self.subject,
			'postercomment': self.msg,
			'postanon_present': '1',
			'postanon': 'on',
			'op': 'Preview',
			'posttype': '2'
			})

			# preview comment
			try:
				f = self.opendev.open(self.url, self.par)
			except IOError:
				print self.proxy, "couldn't preview"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue
			try:
				str = f.read(50000)
			except:
				print self.proxy, "got no data"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue


			# is this proxy readonly?
			if str.find('<!-- Error type: readonly -->') != -1:
				print self.proxy, "is readonly"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue

			# get new formkey
			formkey = getformkey(str)
			if formkey != '':
				print self.proxy, "got 2nd formkey " + formkey
			else:
				print self.proxy, "couldn't get 2nd formkey"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue

			# fucking 20 second shit
			print 'Waiting 20 seconds'
			sleep(20)

			self.url = purl + '?sid=' + sid + '&op=Submit'

			# setup POST request
			self.par = urllib.urlencode(
			{
			'sid': sid,
			'pid': '0',
			'rlogin': '1',
			'formkey': formkey,
			'unickname': '',
			'upasswd': '',
			'postersubj': self.subject,
			'postercomment': self.msg,
			'op': 'Submit',
			'posttype': '2'
			})

			# submit comment
			f = self.opendev.open(self.url, self.par)
			try:
				str = f.read(50000)
			except:
				print self.proxy, "got no data"
				if opt_d != 0:
					try:
						proxies.remove(self.proxy)
					except ValueError:
						pass
				continue

			# did it work?
			if str.find('</TABLE>Comment Submitted.') != -1:
				print self.proxy, "posted #", self.i, "successfully"
			elif str.find('<!-- Error type: filter message -->') != -1:
				print self.proxy, "content too lame to post"
				exit(12)
			else:
				if str.find('Slashdot requires you to wait') != -1:
					print self.proxy, "hit 2 minute limit"
					continue
				elif str.find('<!-- Error type: troll message -->') != -1:
					print self.proxy, "has been 'temporarily' banned"
					if opt_d != 0:
						try:
							proxies.remove(self.proxy)
						except ValueError:
							pass
						continue
				print self.proxy, "screwed up submit"

#####################
# Main program loop #
#####################

if __name__ == '__main__':

	threadList = []

	# spawn threads
	for i in range(numthrds):
		thread = SpamThread()
		threadList.append(thread)

	# start the fuckers
	for thread in threadList:
		thread.start()

	# did all the threads start?
	numthreads = threading.activeCount() - 1
	errmsg('made ' + str(numthrds) + ' threads, ' + str(numthreads) + ' started')

	# keep track of how many proxies
	x = len(proxies)
	while threading.activeCount() > 1:
		y = len(proxies)
		if x != y:
			if y == 1:
				errmsg("1 proxy in global list")
			elif y == 0:
				errmsg("all proxies used up")
				exit(0)
			else:   
				errmsg(str(y) + " proxies in global list")
		try:
			sleep(0.6)
			x = y
		except:
			exit(1)
      ___               
    ,'._,`.              PYTHON SUCKS                                                 
   (-.___.-)               EVEN SANDNIGGERS CAN MASTER IT
   (-.___.-)                                            
   `-.___.-'                                            
    ((  @ @|              .            __                                 
     \   ` |         ,\   |`.    @|   |  |      _.-._                     
    __`.`=-=mm===mm:: |   | |`.   |   |  |    ,'=` '=`.                   
   (    `-'|:/  /:/  `/  @| | |   |, @| @|   /---)W(---\                  
    \ \   / /  / /         @| |   '         (----| |----) ,~              
    |\ \ / /| / /            @|              \---| |---/  |               
    | \ V /||/ /                              `.-| |-,'   |               
    |  `-' |V /                                 \| |/    @'               
    |    , |-'                                 __| |__                    
    |    .;: _,-.                         ,--""..| |..""--.               
    ;;:::' "    )                        (`--::__|_|__::--')              
  ,-"      _,  /                          \`--...___...--'/               
 (    -:--'/  /                           /`--...___...--'\               
  "-._  `"'._/                           /`---...___...---'\              
      "-._   "---.                      (`---....___....---')             
       .' ",._ ,' )                     |`---....___....---'|             
       /`._|  `|  |                     (`---....___....---')             
      (   \    |  /                      \`---...___...---'/              
       `.  `,  ^""                        `:--...___...--;'               
         `.,'                               `-._______.-'                 

[edit] External Links

http://www.python.org - Go here to get your own copy of shitty Python

http://img2.rpill.net - an imageboard script written in python

[edit] Disambiguation

Do not confuse this with Monty Python.

Personal tools

Bookmark and Share