zoukankan      html  css  js  c++  java
  • python模拟登陆 pixiv

    #
    #---author:wuhao
    #
    #在QQ群看到有群友在模拟登陆 pivix.cn 这个网站,闲来无事,我也写了一个测试一下,起初我把它想的复杂了,认为我需要获取服务器返回过来的Set-Cookie,然后传给我post的
    地址,在这废了很大功夫,毕竟在模拟注册YY是踩过这个坑,后来才发现根本没这么复杂,这是一个入门型的模拟登陆,连post的数据都没加密。下面是代码

    import urllib.request
    import urllib.parse
    import http.cookiejar
    import re
    
    BASE_URL="https://www.pixiv.net/"
    ToGetKeyURL="https://accounts.pixiv.net/login?lang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index"
    postURL="https://accounts.pixiv.net/api/login?lang=zh"
    
    
    Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
    Origin="https://accounts.pixiv.net"
    Referer="https://accounts.pixiv.net/login?lang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index"
    Host="accounts.pixiv.net"
    

      

    #定义自己的opener
    def MyOpener(): cookie=http.cookiejar.CookieJar() cookieHandle=urllib.request.HTTPCookieProcessor(cookie) opener=urllib.request.build_opener(cookieHandle) header = { "User-Agent": Agent, "Origin": Origin, "Referer": Referer, "Host": Host } head = [] for key, value in header.items(): head.append((key, value)) opener.addheaders = head return opener

      

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

      

    #模拟登陆
    def postData(opener): getInfo=getpostKey(opener, ToGetKeyURL) post_data= { "pixiv_id":"2857791258@qq.com", "password":"54shuaige", #"captcha":"", #"g_recaptcha_response":"", "post_key":getInfo, #"source":"pc", #"ref":"wwwtop_accounts_index", #"return_to":"https://www.pixiv.net/", } post_data=urllib.parse.urlencode(post_data,"utf-8") print(post_data.encode("utf-8")) if opener.open(postURL,post_data.encode("utf-8")).getcode()==200: print("Login Successfully") return True else: print("Login failed") return False

      

    # main()主函数进行对定义的函数调用

    if
    __name__=="__main__": opener=MyOpener() if postData(opener): print(opener.open("https://www.pixiv.net/member.php?id=24357167").read().decode("utf-8"))
  • 相关阅读:
    CREATE OPERATOR
    create_module
    一个LINUX狂人的语录(个人认为很精辟)
    jQuery 判断多个 input file 都不能为空
    Java实现 LeetCode 2 两数相加
    Java实现 LeetCode 2 两数相加
    Java实现 LeetCode 2 两数相加
    Java实现 蓝桥杯 算法提高 和谐宿舍2
    Java实现 蓝桥杯 算法提高 和谐宿舍2
    Java实现 蓝桥杯 算法提高 和谐宿舍2
  • 原文地址:https://www.cnblogs.com/one-lightyear/p/6764259.html
Copyright © 2011-2022 走看看