可以直接通过浏览器登录后 复制 cookie 到 headers 中发送请求
cookie 简单使用
import urllib.request as lib_requestimport urllib.parse as lib_parsefrom useragent.useragent import get_useragentimport jsonimport sslssl._create_default_https_context = ssl._create_unverified_contexturl = 'https://ruby-china.org/account/sign_in'headers = {'User-Agent': get_useragent()}form_data = {'user[login]': '11510301@qq.com','user[password]': '11510301','user[remember_me]': 0,'commit': '登录'}data = lib_parse.urlencode(form_data).encode()# 设置 headerheader = lib_request.HTTPCookieProcessor()response = lib_request.build_opener(header)# 发起请求request = lib_request.Request(url = url, data = data)res = response.open(request)print(res.read().decode())
保存 cookie
import urllib.request as lib_requestimport urllib.parse as lib_parsefrom useragent.useragent import get_useragentimport http.cookiejar as cookie_jimport jsonimport sslssl._create_default_https_context = ssl._create_unverified_contextform_data = {'user[login]': '11510301@qq.com','user[password]': '11510301','user[remember_me]': 0,'commit': '登录'}headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 ''Safari/537.36',# 'cookie': '_ga=GA1.2.947994158.1586509085; _gid=GA1.2.355086762.1586509085; user_id=eyJfcmFpbHMiOnsibWVzc2FnZSI6Ik9EUTBNVEE9IiwiZXhwIjpudWxsLCJwdXIiOiJjb29raWUudXNlcl9pZCJ9fQ%3D%3D--df4837c32fcd7efb0b65aef3fea6578c049ea318; _homeland_session=cn63mb%2FeaZTu%2BqjOvm42I9bEVE0CfRoPmPnlb%2Bqjm1qs63R8qIMDDanfSG7AJ%2FdEyqKKwcZaziC2d9ZfI4JjcdMMBSfNlRiOXFBST7M4h2m%2FX7CpQudAyFpM6WJmyIeoVeJNDcbaEXXqooqZ9NA1h97qqCVummMgUoeY74IpM1yU%2FX2jC%2BrJJdz9AIFgWJrMaSgYJ%2FYXdVtAg5m4a6Ce15xTPbHInK39Ro5rN9YfP%2B0tDW1U2G1aAGKywHBl80RsnAYlULdBiMOmOq%2FlppxzFkT60IeRRdemi6vrqdaO8FaMZuINAp9KJ0DPI%2F0ctZqPJUXX0gvAEu%2BkCFfPYthirlch2BPu5Ez%2FLSZ7xliKydeQTtMsenAuHQEinIe5nAVgbtCcmDn67CnrYq49TmtzTDr6BzxKnOCNshkoaGFSLJHpCfMYcmaE--fJ1YX4G%2FuGSbxJUh--jiKK%2FovIvJ8Wgal5RPCQFg%3D%3D'}def get_cookie():url = 'https://ruby-china.org/account/sign_in'# data =data = lib_parse.urlencode(form_data).encode()cookie = cookie_j.MozillaCookieJar()# 构建一个 cookie 处理器handler = lib_request.HTTPCookieProcessor(cookie)# 建立 opener 对象opener = lib_request.build_opener(handler)# 获取请求对象request = lib_request.Request(url = url, data = data, headers = headers)# 发送请求response = opener.open(request)# 保存 cookiecookie.save('cookie.txt', ignore_discard = True, ignore_expires = True)print(response.read().decode())def use_cookie():info_url = 'https://ruby-china.org/setting'cookie_jar = cookie_j.MozillaCookieJar()# 加载 cookiecookie_jar.load('cookie.txt', ignore_discard = True, ignore_expires = True)handler = lib_request.HTTPCookieProcessor(cookie_jar)# 建立 openeropener = lib_request.build_opener(handler)# requestrequest = lib_request.Request(url = info_url, headers = headers)# 发送请求response = opener.open(request)print(response.read().decode())if __name__ == '__main__':# get_cookie()use_cookie()
