1. #
    #---author:wuhao
    #
    #在QQ群看到有群友在模拟登陆 pivix.cn 这个网站,闲来无事,我也写了一个测试一下,起初我把它想的复杂了,认为我需要获取服务器返回过来的Set-Cookie,然后传给我post的
    地址,在这废了很大功夫,毕竟在模拟注册YY是踩过这个坑,后来才发现根本没这么复杂,这是一个入门型的模拟登陆,连post的数据都没加密。下面是代码
  1. import urllib.request
  2. import urllib.parse
  3. import http.cookiejar
  4. import re
  5.  
  6. BASE_URL="https://www.pixiv.net/"
  7. ToGetKeyURL="https://accounts.pixiv.net/login?lang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index"
  8. postURL="https://accounts.pixiv.net/api/login?lang=zh"
  9.  
  10. Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
  11. Origin="https://accounts.pixiv.net"
  12. Referer="https://accounts.pixiv.net/login?lang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index"
  13. Host="accounts.pixiv.net"

  

  1. #定义自己的opener
    def MyOpener():
  2. cookie=http.cookiejar.CookieJar()
  3. cookieHandle=urllib.request.HTTPCookieProcessor(cookie)
  4. opener=urllib.request.build_opener(cookieHandle)
  5.  
  6. header = \
  7. {
  8. "User-Agent": Agent,
  9. "Origin": Origin,
  10. "Referer": Referer,
  11. "Host": Host
  12. }
  13.  
  14. head = []
  15.  
  16. for key, value in header.items():
  17. head.append((key, value))
  18.  
  19. opener.addheaders = head
  20. return opener

  

  1. #获取需要post的数据postkey
    def getpostKey(opener,url):
  2. postKey=""
  3. content=opener.open(url).read().decode("utf-8")
  4. postkey=re.findall(r"<input.+?name=\"post_key\".+?>",content)[0].split(" ")[3].split("\"")[1]
  5. print(postkey)
  6. return postkey

  

  1. #模拟登陆
    def postData(opener):
  2. getInfo=getpostKey(opener, ToGetKeyURL)
  3. post_data=\
  4. {
  5. "pixiv_id":"2857791258@qq.com",
  6. "password":"54shuaige",
  7. #"captcha":"",
  8. #"g_recaptcha_response":"",
  9. "post_key":getInfo,
  10. #"source":"pc",
  11. #"ref":"wwwtop_accounts_index",
  12. #"return_to":"https://www.pixiv.net/",
  13. }
  14. post_data=urllib.parse.urlencode(post_data,"utf-8")
  15. print(post_data.encode("utf-8"))
  16. if opener.open(postURL,post_data.encode("utf-8")).getcode()==200:
  17. print("Login Successfully")
  18. return True
  19. else:
  20. print("Login failed")
  21. return False

  

  1. # main()主函数进行对定义的函数调用
  2.  
  3. if __name__=="__main__":
  4. opener=MyOpener()
  5. if postData(opener):
  6. print(opener.open("https://www.pixiv.net/member.php?id=24357167").read().decode("utf-8"))

python模拟登陆 pixiv的更多相关文章

  1. Python模拟登陆新浪微博

    上篇介绍了新浪微博的登陆过程,这节使用Python编写一个模拟登陆的程序.讲解与程序如下: 1.主函数(WeiboMain.py): import urllib2 import cookielib i ...

  2. Python模拟登陆万能法-微博|知乎

    Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...

  3. Python模拟登陆TAPD

    因为在wiki中未找到需要的数据,查询也很迷,打算用python登录tapd抓取所需项目下的wiki数据,方便查找. 2018-9-30 19:12:44 几步走 模拟登录tapd 抓取wiki页左侧 ...

  4. Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享

    Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享 支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看 ...

  5. python 模拟登陆,请求包含cookie信息

    需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...

  6. python模拟登陆之下载

    好长时间没有更新博客了,哈哈. 今天公司给了这么一个需求,现在我们需要去淘宝获取上一天的订单号,然后再根据订单号去另一个接口去获取订单详情,然后再给我展示到web! 中间涉及到的技术点有: 模拟登陆 ...

  7. 使用python模拟登陆百度

    #!/usr/bin/python # -*- coding: utf- -*- """ Function: Used to demostrate how to use ...

  8. Python模拟登陆某网教师教育网

    本文转载自看雪论坛[作者]rdsnow 不得不说,最近的 Python 蛮火的,我也稍稍了解了下,并试着用 Python 爬取网站上的数据 不过有些数据是要登陆后才能获取的,我们每年都要到某教师教育网 ...

  9. python模拟登陆知乎并爬取数据

    一些废话 看了一眼上一篇日志的时间 已然是5个月前的事情了 不禁感叹光阴荏苒其实就是我懒 几周前心血来潮想到用爬虫爬些东西 于是先后先重写了以前写过的求绩点代码 爬了草榴贴图,妹子图网,后来想爬婚恋网 ...

随机推荐

  1. (3)ES6解构赋值-对象篇

    对象的解构赋值(可以不按顺序,但是key必须一样否则为undefined) //demo1 var {name,age} = { name: "Jewave", age:26 }; ...

  2. 【Alpha】Daily Scrum Meeting——Day2

    站立式会议照片 1.本次会议为第二次 Meeting会议: 2.本次会议在中午12:30,在陆大楼召开,本次会议为30分钟讨论昨天的任务完成情况以及接下来的任务安排. 每个人的工作分配 成 员 昨天已 ...

  3. 201521123088《JAVA程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4 ...

  4. 源码跟读,Spring是如何解析和加载xml中配置的beans

    Spring版本基于: 跟踪代码源码基于: https://github.com/deng-cc/KeepLearning commit id:c009ce47bd19e1faf9e07f12086c ...

  5. Java main方法继承

    java中main方法是可以继承的 Test1.java package Variables; public class Test1 { public static void main(String[ ...

  6. 运算符(C# 参考)

    reference:https://msdn.microsoft.com/zh-cn/library/zkacc7k1(v=vs.140).aspx

  7. 关于Tomcat一些启动错误的解决方法

    一.Eclipse tomcat 启动超时: 错误内容: Server JBoss v4.0 at localhost was unable to start within 50 seconds. I ...

  8. 关于ios::sync_with_stdio(false)

    作用就是取消同步,这样的话使用cin就和使用scanf效率相似. 但是今天在做题的时候碰到一点小问题,就是在关闭同步的时候使用scanf是交了一发代码,然后RE了(经检查scanf没有写错),而把关同 ...

  9. XML的序列化(Serializer)

    步骤: //1获取XmlSerializer 类的实例 通过Xml这个工具类去获取 XmlSerializer xmlSerializer = Xml.newSerializer(); try { / ...

  10. Codeforce E. Fire

    E. Fire time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...