58同城批量注册python代码

#coding=utf-8
import urllib2 as request,urllib as parse,cookielib,random
import os,random,re,time
import json.encoder as json_encode,json.decoder as json_decode
class Api_connect:
        #API CONNECT QQ SOCKET
    __headers = {
        'User-Agent':'Mozilla/6.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.9 Safari/534.30',\
        'Referer':'http://www.58.com'\
    }
    __data = {
        'cookiepath':'cookie.txt'
    } #登陆以后存放数据
    __http = {} #http进程信息
    __version__ = '1.0'
    def __init__(self,proxy={}):
        self.__proxy = proxy
        self.__httpproess()
    def __httpproess(self):
        #初始化模拟进程
        proxy_support = request.ProxyHandler(self.__proxy)
        self.__http['cj'] = cookielib.MozillaCookieJar(self.__data['cookiepath'])
        self.__http['opener'] = request.build_opener(proxy_support,request.HTTPCookieProcessor(self.__http['cj']))
        pass
    def urlopen(self,url,method='GET',data={},savecookie=False):
        try:
            if (method).upper() == 'POST':
                data = parse.urlencode(data).encode('utf-8')
                self.__http['req'] = request.Request(url,data,self.__headers)
            else:
                self.__http['req'] = request.Request(url=url,headers=self.__headers)
            fp = self.__http['opener'].open(fullurl=self.__http['req'],timeout=5)
            t= fp.read()
            try:
                str = t.decode('utf-8')
            except UnicodeDecodeError:
                str = t
            if savecookie == True:
                self.__http['cj'].save(ignore_discard=True,ignore_expires=True)
            fp.close()
            return str
        except Exception as e:
            return '{}'
    def getForm(self,str):
        if str.find(u'58同城') != -1:
            r = str.index('<form')
            o = str.index('</form>')
            return str[r:o]
        return None
    def getFormValue(self,name,str):
        str2 = re.findall(r'\<input.+name\=\"'+ name +'\".+value=\".+\"\/\>',str)
        findstr = 'value="'
        u1 = str2[0].find(findstr)
        u2 = str2[0].find('"/>')
        return str2[0][u1+len(findstr):u2]
        pass
    def __del__(self):
        pass

class reg(object):
    reg = {'reg_page':'http://passport.58.com/reg/','post_page':'http://passport.58.com/save/','check_page':'http://passport.58.com/regok?regok=1'}
    proxy ={}
    def __init__(self):
        self.regfile = file('reg.txt','wb')
    def setproxy(self,list):
        fp = open(list,'rb')
        self.proxy = fp.readlines()
        self.proxy = [i.rstrip() for i in self.proxy]
        fp.close()
    def getproxy(self):
        return {"http":"http://"+self.proxy[random.randint(0,len(self.proxy)-1)]}
    def setinfo(self,info = []):
        self.info = info
        pass
    def setfile(self,file):
        fp = open(file,'rb')
        self.info = fp.readlines()
        fp.close()
    def reg_load(self,username,password,email):
        if len(self.proxy) != 0:
            ip = self.getproxy()
        else:
            ip ={}
        self.t = Api_connect(ip)
        str = self.t.urlopen(url=self.reg['reg_page'],savecookie=True)
        if str == '{}':
            print u'代理ip错误',ip
            ip = self.getproxy()
            self.t = Api_connect(ip)
            str = self.t.urlopen(url=self.reg['reg_page'],savecookie=True)
        form = self.t.getForm(str)
        if form == None:
            print u'表单错误,太频繁胃'
            return
        postdata = {'nickName':'%s'%username,'txtemail':'%s'%email,'password':'%s'%password,'cpassword':'%s'%password,'cd':self.t.getFormValue('cd',form),'ptk':self.t.getFormValue('ptk',form)}
        self.t.urlopen(url=self.reg['post_page'],method='POST',data=postdata,savecookie=True)
        str = self.t.urlopen(url=self.reg['check_page'],savecookie=True)
        info="用户名:{0},密码:{1},邮箱:{2}".format(username,password,email)
        uinfo = u"用户名:{0},密码:{1},邮箱:{2}".format(username,password,email)
        if str.find(u'注册成功') != -1:
            print >> self.regfile,info
            print uinfo,u',注册成功!'
        else:
            print uinfo,u',注册失败!'
        del self.t
    def reg_start(self):
        for i in self.info:
            self.reg_load(*i.rstrip().split(" "))

if __name__ == "__main__":
    reg =reg()
    reg.setfile('user.txt')
    reg.setproxy('Proxies.txt')
    reg.reg_start()

带有两个文件,一个是代理ip(Proxies.txt),一个是需要注册的用户信息(user.txt),大家可以看一下

user.txt

pengxg100 1325700 10041289@qq.com
penang101 1325700 101241289@qq.com

Proxies.txt

116.236.205.100:80
119.97.146.152:80
222.165.175.118:80
120.35.31.101:8080
124.193.109.117:80
219.134.240.203:80
122.226.240.235:80
59.57.15.71:80
180.137.45.86:8080
180.139.91.27:8080
202.103.215.199:80
202.105.233.40:80
222.73.25.121:6666
222.74.212.66:808
122.225.107.20:80
122.225.107.21:80
122.225.107.27:80
60.190.77.98:3128
60.250.109.87:3128
82.222.49.81:8080
119.145.197.69:8080
121.8.209.190:3128
202.43.179.182:54321
218.6.13.35:80
203.66.83.46:3128
82.222.19.54:8080
60.191.220.241:3128
219.159.105.180:8080
218.22.80.61:3128
218.16.145.109:8080
61.166.155.230:8080
118.112.185.71:8080
121.12.250.201:3128
222.83.210.45:8080
122.225.22.22:8080
61.157.217.31:80
82.222.49.65:8080
122.226.240.233:80
82.222.48.1:8080
59.172.208.186:8080
218.94.149.114:8080
115.236.98.109:80
122.72.1.118:80
122.72.112.184:80
222.184.9.242:3128
119.161.238.90:80
203.66.187.246:81
61.136.59.177:80
203.66.187.246:88
219.133.36.198:80
111.1.33.138:80
111.1.32.10:80
122.48.31.78:80
111.1.32.4:80
202.98.123.126:8080
211.138.124.203:80
221.130.23.104:80
111.1.32.20:80
211.138.124.175:80
203.66.187.246:80
221.130.18.80:80
180.96.19.24:8080
122.72.11.129:80
118.112.185.71:8080
221.130.18.93:80
221.130.18.78:80
219.145.93.110:8080
180.139.91.27:8080
120.203.214.177:80
203.66.188.250:80
121.33.249.170:8080
124.160.239.234:80
120.203.215.16:80
221.130.18.51:80
218.152.121.184:8080
61.135.208.184:80
111.1.32.29:80
210.53.53.101:80
111.1.32.7:80
202.169.62.139:8080
115.236.98.109:80
111.1.32.16:80
173.242.123.4:80
218.201.21.176:80
119.59.100.105:3128
58.137.98.211:80
211.138.124.199:80
122.72.112.166:80
211.76.97.152:80
60.28.186.114:80
78.85.39.109:3128
211.138.124.211:80
218.247.138.40:80
211.76.97.146:80
211.76.97.150:80
186.228.41.210:8080
72.64.146.135:3128
195.96.85.61:8080
202.77.107.110:8082
124.160.239.223:80
118.97.75.226:8080

 

Posted in python | Tagged , , | Leave a comment

python多进程共享端口(限linux下使用)

从一个论坛里面找到的,不容易啊,现在发上来

主进程parent.py:

import os, socket, sys
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(("", 8000))
s.listen(10)
for i in xrange(3):
    pid = os.fork()
    if pid == 0:
        os.dup2(s.fileno(), sys.stdin.fileno())
        os.execv("/usr/bin/python", ("python", "child.py"))
    else:
        print "fork", i, "process id =", pid  

print "Parent exited"
sys.exit()

子进程:child.py:

import socket, os, sys
print "Child", os.getpid(), "started"
s = socket.fromfd(sys.stdin.fileno(), socket.AF_INET, socket.SOCK_STREAM)
fd, address = s.accept()
print "Accept from", address
sys.exit()

呵呵,两个文件搞定,大家可以测试一下。

Posted in python | Tagged , | Leave a comment

面向过程的函数式框架,汗,太无聊了,花了一天半写了这个。

近期因为一个工作的项目,大家说都不太想用面向对象的框架,然后我就弄了一个面向过程的函数式框架出来,还有很多不完美的,以后会加上的,过滤,安全==。不过有一点可以高兴的事,我已经用自己写的这个框架在做一个新的项目了。

下面放出源来给大家下载。

methodframework

Posted in PHP | Leave a comment

kangle做为国人的一款软件,也是非常优秀的。

虽然说kangle+php-cgi模式经常出现504错误,这也不会是kangle的问题,是php-cgi处理不过来,就好像经常看见504 nginx/1.x.x一样。但是今天要说的一点就是kangle+apache

kangle做为反代理,apache用来处理php应用,在速度上在性能上都要比nginx强。但是有点不如意kangle处理静态页面没有nginx强,强在哪,等下我发几张图出来,大家对比下,测试环境为vm中的centos6.1 x64 内在为1G 4核心 amd 推土机。

做为使用半年来,第一次使用kangle做为测试,第一次拿kangle和nginx对比,因为他们有太多的相同点,kangle更符合国人的习惯吧。

发图上来看看。

nginx处理html页面

 

kangle处理html页面

 

nginx+apache处理phpinfo函数页面

 

kangle+apache处理phpinfo函数页面

一直会支持kangle的发展。

Posted in 服务器 | Tagged , , , , | Leave a comment

工作中的烦恼

昨天真是让人郁闷啊,先说说我的牢骚吧,一个领导人如果没有了威信,等于什么?下属还要不要服从上司?这算什么公司。来一年了,我居然还没看清楚公司的发展方向是什么,所谓的资源共享都是一个幌子,连技术部份询问一点情况,都会被告诫说:这是秘密。项目组下的一个网站被加了统计代码,都被要求撤消,这让上面的领导如何是好。还有一点威信吗?比如:母公司要求查看子公司的账务报表被告诫说:这是秘密,真是一个天大的笑话,这公司真是让人笑话啊。

Posted in 未分类 | 1 Comment

kangle通过footer模块设置百度爬虫不能访问某个目录

自从使用了kangle,通过自己的慢慢摸索也学会了一些新东西,通过请求控制和回应控制,完全可以做到所有web服务器不能轻松做到的功能,比如更改某个设置需要重启web软件,添加一个新的端口,需要重启web软件,这些在kangle下都是点几点按钮的事情,太简单了,下面我就来介绍一个怎么使用kangle来限制百度爬虫访问的控制。

这样就禁止百度爬虫进入html目录了。

大家还可以使用标记模块来进行访问控制。

Posted in 服务器 | Leave a comment

python-qq准备改版

改版的有:

  1. 发送表情功能
  2. 切换状态功能
  3. 群发消息功能(除掉群发群消息)
  4. 改变代码臃肿的结构

现版本python-qq版本下载

下载链接:python-qq

 

Posted in python | Leave a comment

使用kangle添加全站统计代码footer模块篇

这是kangle2.9.0版本当中非常重要的一个功能,有了这样一个功能,做为主机商或者个人网站,都能通过这个模块来定制任何信息,比如我要在网站上加一个统计代码,可是网站比较老,而且已经有很多静态文件,那该怎么加呢?那就使用footer模块吧。非常的方便。

 

Posted in 服务器 | Leave a comment

kangle日志配置awstats

今天来讲讲kangle日志切割的问题.这次是配合awstats使用,用它是因为我喜欢他.

使用非常的方便

关天日志的问题请查看

http://www.kanglesoft.com/bbs/forum.php?mod=viewthread&tid=5820&highlight=%E6%97%A5%E5%BF%97

因为kangle web server的日志格式和apache的是一模一样的,所以不用做任何修改,都能通过各种各样的日志分析软件进行分割

首先先讲下,这方案可能不是很方便,不过正式工作中遇到了这个问题,没办法.

  1. kangle web server服务器所在windows平台下.
  2. awstats服务器所在centos下.(此原因为我不会perl,而且关键词在windows下获取不到,操作系统也获取不到)
  3. 只能把web日志下载到awstats所在的centos上,(所以需要一个自动的脚本,等下我会放出来)
  4. 目录结构,因为网站太多,所以目录结构也按项目名称来区分.比如:
    项1/
       abc.com/
       2.com/
    项2/
       aa.com/
       bb.com/
    这样的形式.
    centos日志所在目录形式为,就不用那么复杂了.
    log/
      项1_aa.com
      项1_2.com
      项2_aa.com
      项2_bb.com

     

  5. aaaa
Posted in 服务器 | Leave a comment

numpy模块,ctypes和cython的一些简介

  1. numpy高精度科学数学计算,也可以像c一样操作数组和结构(其中包括多维数组),其他的还得详细深入学习
  2. ctypes可以写简单的c变量,数组和结构,不过可以调用c编译好的库,c的扩展都可以使用用它来调用,很是方便(不过还是躲不了单核的限制,网上有资料可以改写ctypes的源码,来去除这个限制,过程好像是使用c来调用ctypes的api)
  3. cython用来写python扩展,用它写出来的库,都可以通过import来载入,性能上比python的快,cython里可以载入python扩展(比如 import math),也可以载入c的库的头文件(比如:cdef extern from “math.h”),也可以写python代码.
Posted in python | Tagged | Leave a comment