可以直接通过浏览器登录后 复制 cookie 到 headers 中发送请求

cookie 简单使用

  1. import urllib.request as lib_request
  2. import urllib.parse as lib_parse
  3. from useragent.useragent import get_useragent
  4. import json
  5. import ssl
  6. ssl._create_default_https_context = ssl._create_unverified_context
  7. url = 'https://ruby-china.org/account/sign_in'
  8. headers = {
  9. 'User-Agent': get_useragent()
  10. }
  11. form_data = {
  12. 'user[login]': '11510301@qq.com',
  13. 'user[password]': '11510301',
  14. 'user[remember_me]': 0,
  15. 'commit': '登录'
  16. }
  17. data = lib_parse.urlencode(form_data).encode()
  18. # 设置 header
  19. header = lib_request.HTTPCookieProcessor()
  20. response = lib_request.build_opener(header)
  21. # 发起请求
  22. request = lib_request.Request(url = url, data = data)
  23. res = response.open(request)
  24. print(res.read().decode())

保存 cookie

  1. import urllib.request as lib_request
  2. import urllib.parse as lib_parse
  3. from useragent.useragent import get_useragent
  4. import http.cookiejar as cookie_j
  5. import json
  6. import ssl
  7. ssl._create_default_https_context = ssl._create_unverified_context
  8. form_data = {
  9. 'user[login]': '11510301@qq.com',
  10. 'user[password]': '11510301',
  11. 'user[remember_me]': 0,
  12. 'commit': '登录'
  13. }
  14. headers = {
  15. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 '
  16. 'Safari/537.36',
  17. # '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'
  18. }
  19. def get_cookie():
  20. url = 'https://ruby-china.org/account/sign_in'
  21. # data =
  22. data = lib_parse.urlencode(form_data).encode()
  23. cookie = cookie_j.MozillaCookieJar()
  24. # 构建一个 cookie 处理器
  25. handler = lib_request.HTTPCookieProcessor(cookie)
  26. # 建立 opener 对象
  27. opener = lib_request.build_opener(handler)
  28. # 获取请求对象
  29. request = lib_request.Request(url = url, data = data, headers = headers)
  30. # 发送请求
  31. response = opener.open(request)
  32. # 保存 cookie
  33. cookie.save('cookie.txt', ignore_discard = True, ignore_expires = True)
  34. print(response.read().decode())
  35. def use_cookie():
  36. info_url = 'https://ruby-china.org/setting'
  37. cookie_jar = cookie_j.MozillaCookieJar()
  38. # 加载 cookie
  39. cookie_jar.load('cookie.txt', ignore_discard = True, ignore_expires = True)
  40. handler = lib_request.HTTPCookieProcessor(cookie_jar)
  41. # 建立 opener
  42. opener = lib_request.build_opener(handler)
  43. # request
  44. request = lib_request.Request(url = info_url, headers = headers)
  45. # 发送请求
  46. response = opener.open(request)
  47. print(response.read().decode())
  48. if __name__ == '__main__':
  49. # get_cookie()
  50. use_cookie()