模拟登陆和模拟发帖,思路讲解和一个网站实例代码

大家好,事隔好几个月,终于又发帖,要说原因呢,那就是最近几个月公司项目准备上线都比较忙,没时间搞..

话不多说~~来点干货~

曾经在工作中,因为公司的需要,做过一会模拟登陆和模拟发帖的小项目,目的就是达到不需要人手动点击和输入,只需要定时直接把想发的内容写上去,加上账号密码就可以进行自动发帖.

这样就可以有一个设想,可以事先建立一个账号密码的序列文件,格式可以随便采用,但是要能够自己利用代码从文件里面取一条一条的账号密码,然后就可以进行逐个发帖了,或者把再建立两个文件,储存需要发的文字和需要发的图片的本地路径,最后准备就绪,就可以开始写代码了.

1.首先分析一下网站登陆界面,看看发送了哪些请求,和需要哪些参数.

2.反复登陆几次,利用抓包软件抓取其请求,查看有什么区别,分析其潜在的验证措施.

3.构建几个基础请求,试探能否成功发送.

4.整合代码,构建请求类,进行正式整合代码,把前几个基础类整合一起,进行发送,看是否成功,不成功再看具体问题

-------------------------------------------重点------------------------------------------------.

对第三步,有几点问题:

1.希望各位小伙伴别用自己的账号,多注册几个实验实验

2.发送请求的时候最好利用代理

(因为我就在这步,封了好几次号,和IP)

3.在第三步的时候最重要的是看密码的加密是什么加密方式,这个得看具体情况具体分析了,

之前搞百度的时候,那搞得可酸爽了,找资料和实验搞了一天多,还好,最后成功了,真是感动...

4.一定一定要找对token验证秘钥,这东西,首先只能用一次,其次就是这个还有时效性,所以要费点时间

其他的参数吧,就有什么搞什么, 具体网站具体分析,就不多说了,上代码.

-------------------------------------------代码-------------------------------------------------------

拿来做实例的网站是一个比较普遍的大多数网站,比较小,所以验证不是很多,就不拿大网站介绍了,百度那个我写了一个星期左右,参数太多了,不好拿来做示例,见谅..

网站名:次元岛(一个动漫cosplay网站)

class Cos():
    def __init__(self):
        self.redis_cli = redis.Redis(host="127.0.0.1", port=6379, db=14)
        self.base_url = "http://ciyuandao.com/handler/user/userlogin"
        self.Publish = 'http://ciyuandao.com/handler/share/AddShare'
        self.get_token='http://ciyuandao.com/handler/sys/GetUpToken'
        self.upload_img = "http://upload.qiniu.com/"
        self.shareTitle = raw_input("请输入标题:")
        self.roleName = raw_input("请输入角色名:")
        self.userCn = raw_input("请输入作者昵称:")
        self.content = raw_input("请输入内容:")
        self.img_num = raw_input("需要上传几张图:")
        self.s = requests.Session()
        self.formdata = {
            'account': '18826515118',
            'password': '916128333ab',
        }
        self.formPublish={
            "shareType":"2",
            # "imgs":"FukgS7JffiP5WKfcNEJUQiqwwSQN",
            "imgType":"1",
            "shareTitle":self.shareTitle,
            "roleName":self.roleName,
            "userCn":self.userCn,
            "content":self.content,
            "toWeibo":"0"
        }
        self.qiniuimg_data = {
            # "name":"456.jpg",
            "chunk":"0",
            "chunks":"1",
            # "token": "sg8pCj-x9YrZQJ3aAJL3oMLA-NvRAVhqboGkYjyu:OMbiFV764pfjRR5LZ1zCbuZFgXU=:eyJzY29wZSI6ImNvc3BsYXlsYSIsImRlYWRsaW5lIjoxNTQwNDU0MTA5LCJpbnNlcnRPbmx5IjowLCJkZXRlY3RNaW1lIjowLCJmc2l6ZUxpbWl0IjowLCJmc2l6ZU1pbiI6MCwiY2FsbGJhY2tGZXRjaEtleSI6MH0=",
            # "key":"asdasdasdsadasdasdasdasds.jpg",
        }
        self.headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
    def home_message(self):
        self.s.post(self.base_url, data=self.formdata, headers=self.headers)#登陆,获取cookie
        """
        cookie = self.s.cookies.get_dict()
        self.redis_cli.set("cookie_cos_la", cookie)
        cookie = eval(self.redis_cli.get("cookie_cos_la"))
        html = self.s.post(self.Publish,cookies = cookie,headers = self.headers).content
        """
        uptoken_obj = eval(self.s.get(self.get_token,headers = self.headers).content)#获取七牛云token
        uptoken = uptoken_obj["uptoken"]
        self.qiniuimg_data["token"]=uptoken
        imgname_list=[]
        for _ in range(int(self.img_num)):
            img_name = raw_input("输入上传的图片名:")
            img_path = raw_input("输入上传路径:")
            # self.qiniuimg_params['name'] = self.img_name+".jpg"
            # files = {'file': ("1.jpg", open("./2.jpg", "rb"), "image/jpeg")}
            files = {'file': (img_name+".jpg", open(img_path, "rb"), "image/jpeg")}
            img_onlyname = eval(self.s.post(self.upload_img,data=self.qiniuimg_data,files=files).content)
            imgname_list.append(img_onlyname["key"])
        self.formPublish["imgs"]=",".join(imgname_list)
        self.s.post(self.Publish,data=self.formPublish,headers = self.headers)#上传文章

    def main(self):
        self.home_message()
if __name__ == '__main__':
    cos = Cos()
    cos.main()

这个代码是我18年10-11月份的,经过我当时的实验,是可以正常发帖,和上传图片的,不知道现在还能不能用,可以拿去参考参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值