免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3708 | 回复: 7
打印 上一主题 下一主题

刚刚接触python的新手问几个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-28 14:53 |只看该作者 |倒序浏览
本帖最后由 feeLinglyn 于 2012-11-11 18:20 编辑

由于一个prp 让我这个之前没有学过python的需要完成以下内容(用的是python2.7)

批量注册某网站

问题1. 我们先以某个没验证码的网站

import re;
import cookielib;
import urllib;
import urllib2;

def checkAllCookiesExist(cookieNameList, cookieJar) :
    cookiesDict = {};
    for eachCookieName in cookieNameList :
        cookiesDict[eachCookieName] = False;
        allCookieFound = True;
        for cookie in cookieJar :
            if(cookie.name in cookiesDict) :
                cookiesDict[cookie.name] = True;
        for eachCookie in cookiesDict.keys() :
            if(not cookiesDict[eachCookie]) :
                 allCookieFound = False;
                 break;
        return allCookieFound;
   
def emulateLoginHuanxiao():
    cj = cookielib.CookieJar();
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
    urllib2.install_opener(opener);

    print " emulate login huanxiao";
    staticpage = "http://huanxiao.cc/mall/index.php";
    baiduMainLoginUrl = "http://huanxiao.cc/mall/index.php?app=member&act=register&siteId=1";
    postDict = {
        'user_name':"prpdiyicitest3",
        'password':"123456",
        'password_confirm':"123456",
        'email':"qqqqqq@qq.com",
        'agree':"1",
        'ret_url':staticpage
         };
    postData = urllib.urlencode(postDict);
    print "postData=",postData;
    req = urllib2.Request(baiduMainLoginUrl, postData);
    req.add_header('Content-Type', "application/x-www-form-urlencoded");
    cookiesToCheck = ['ECM_ID'];
    loginHuanxiaoOK = checkAllCookiesExist(cookiesToCheck, cj);
    if(loginHuanxiaoOK):
        print "+++ Emulate login is OK, ^_^";
    else:
        print "--- Failed to emulate login !"

if __name__=="__main__":
            emulateLoginHuanxiao();
            
有个小问题 就是加入我现在要注册那个网站,
其中有个变量通过IE的F12得到的分析网页是
ret_url=http%253A%252F%252Fhuanxiao.cc%252Fmall%252Findex.php

但是如果是按照一般的url encode 和decode他每个字符前面都多了个25
就是我认为理论上会得到这个 但是却得到上面那个带25的……
http%3A%2F%2Fhuanxiao.cc%2Fmall%2Findex.php

假设我先设staticpage = "http://huanxiao.cc/mall/index.php";
postData里有 'ret_url':staticpage,
如果直接后面用url里  postData=urllib.urlencode(postData);
得到的ret_url是http%3A%2F%2Fhuanxiao.cc%2Fmall%2Findex.php



十分感谢啊~

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-10-28 22:08 |只看该作者
保存COOKIE就可以了.

论坛徽章:
0
3 [报告]
发表于 2012-10-28 23:42 |只看该作者
求具体解释下~就是1的那个是什么问题?
2的话我那个API的用户密码在哪里输 然后怎么调到主程序里?

回复 2# linux_c_py_php


   

论坛徽章:
0
4 [报告]
发表于 2012-11-08 12:54 |只看该作者
回复 1# feeLinglyn


    仅提供参考:
【教程】模拟登陆网站 之 Python版(内含两种版本的完整的可运行的代码)

如果上述帖子中内容看懂了,你这个问题,你自己就可以搞定了。

论坛徽章:
0
5 [报告]
发表于 2012-11-11 14:03 |只看该作者
回复 4# crifan

谢谢了 我在研究下~
   

论坛徽章:
0
6 [报告]
发表于 2012-11-11 18:17 |只看该作者
本帖最后由 feeLinglyn 于 2012-11-11 18:21 编辑

回复 4# crifan


   

研究了一个下午 感觉受益匪浅~

不过有个小问题不知道你能解决么 就是加入我现在要注册那个网站,
其中有个变量通过IE的F12得到的分析网页是
ret_url=http%253A%252F%252Fhuanxiao.cc%252Fmall%252Findex.php

但是如果是按照一般的url encode 和decode他每个字符前面都多了个25
就是我认为理论上会得到这个 但是却得到上面那个带25的……
http%3A%2F%2Fhuanxiao.cc%2Fmall%2Findex.php

假设我先设staticpage = "http://huanxiao.cc/mall/index.php";
postData里有 'ret_url':staticpage,
如果直接后面用url里  postData=urllib.urlencode(postData);
得到的ret_url是http%3A%2F%2Fhuanxiao.cc%2Fmall%2Findex.php

请问有什么办法解决么

我把原帖子改了~里面的代码是现在的代码 感觉就差这一步……

论坛徽章:
0
7 [报告]
发表于 2012-11-12 16:56 |只看该作者
你是想要得到:
  1. ret_url=http%253A%252F%252Fhuanxiao.cc%252Fmall%252Findex.php
复制代码
是吧。
那么经过两次urllib.quote_plus,即可得到你要的数据:
  1. staticpage = "http://huanxiao.cc/mall/index.php";
  2. print "Original staticpage\t\t\t\t=",staticpage;
  3. staticpage = urllib.quote_plus(staticpage);
  4. print "after first quote_plus,staticpage\t\t=",staticpage;
  5. staticpage = urllib.quote_plus(staticpage);
  6. print "after second quote_plus,staticpage\t\t=",staticpage;
  7. youWantRetUrl = "http%253A%252F%252Fhuanxiao.cc%252Fmall%252Findex.php";
  8. print "youWantRetUrl\t\t\t\t\t=",youWantRetUrl;
复制代码
输出是:
  1. Original staticpage                             = http://huanxiao.cc/mall/index.php
  2. after first quote_plus,staticpage               = http%3A%2F%2Fhuanxiao.cc%2Fmall%2Findex.php
  3. after second quote_plus,staticpage              = http%253A%252F%252Fhuanxiao.cc%252Fmall%252Findex.php
  4. youWantRetUrl                                   = http%253A%252F%252Fhuanxiao.cc%252Fmall%252Findex.php
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-11-12 18:06 |只看该作者
回复 7# crifan


   啊感激不尽 我去试试~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP