文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php教程>什么是cookies

什么是cookies

时间:2021-01-08  来源:互联网  标签: cookies

什么是cookies呢?Cookie是保存在客户端的纯文本文件,比如txt文件,所谓的客户端就是我们自己的本地电脑,当我们使用自己的电脑通过浏览器进行访问网页的时候,服务器就会生成一个证书并返回给我的浏览器并写入我们的本地电脑,这个证书就是cookie。下面PHP小编分享什么是cookies的问题解答。

2020101416410988586.jpg

什么是cookie:

有些网站有爬虫机制,目标网站为了避免一个IP下大量用户多次访问,就会限制访问IP。当访问目标网站的时候,需要登录的时候,cookies就是保存您的登录信息的,避免下次重复登录。Cookie其实就是浏览器缓存。

保存cookies的理由:

大部分网站在采集的时候,需要登录,必须保证您在登陆的情况下采集到数据,这时候就需要保存cookies,通过cookie进行登陆来进行业务采集。

cookie最好是登陆获取的,一般访客的cookie,对方限制会比较严格,可以控制一个地区新访客的访问频率。另外反爬统计的js也要分析下,是不是做了机器人判断,有没有做窗口分辨率判断

在一般情况下,使用Cookie方式进行登陆信息的保存。比如在爬虫业务的登录中,如果没有Cookie,登录目标网站的话,如果需要访问该网站的其它页面时,仍然会是未登录状态。如果有了Cookie,当登录成功后,爬取该网站的其他网页时,仍然会保存登录状态对其内容进行爬取。

cookies的生成:

我们使用chrome driver来进行登录和cookie的生成


  1. import os

  2. import time

  3. import zipfile

  4. from selenium import webdriver

  5. from selenium.common.exceptions importTimeoutException

  6. from selenium.webdriver.common.by importBy

  7. from selenium.webdriver.support import expected_conditions as EC

  8. from selenium.webdriver.support.ui importWebDriverWait

  9. classGenCookies(object):

  10.     USER_AGENT = open('useragents.txt').readlines()

  11. #16yun代理配置

  12.     PROXY_HOST ='t.16yun.cn'#  proxy or host

  13.     PROXY_PORT =31111# port

  14.     PROXY_USER ='USERNAME'# username

  15.     PROXY_PASS ='PASSWORD'# password

  16. @classmethod

  17.     def get_chromedriver(cls, use_proxy=False, user_agent=None):

  18.         manifest_json ="""

  19. {

  20. "version":"1.0.0",

  21. "manifest_version":2,

  22. "name":"Chrome Proxy",

  23. "permissions":[

  24. "proxy",

  25. "tabs",

  26. "unlimitedStorage",

  27. "storage",

  28. "<all_urls>",

  29. "webRequest",

  30. "webRequestBlocking"

  31. ],

  32. "background":{

  33. "scripts":["background.js"]

  34. },

  35. "minimum_chrome_version":"22.0.0"

  36. }

  37. """

  38.         background_js ="""

  39.         var config ={

  40.                 mode:"fixed_servers",

  41.                 rules:{

  42.                singleProxy:{

  43.                     scheme:"http",

  44.                     host:"%s",

  45.                     port: parseInt(%s)

  46. },

  47.                 bypassList:["localhost"]

  48. }

  49. };

  50.         chrome.proxy.settings.set({value: config, scope:"regular"}, function(){});

  51.         function callbackFn(details){

  52. return{

  53.                 authCredentials:{

  54.                     username:"%s",

  55.                     password:"%s"

  56. }

  57. };

  58. }

  59.         chrome.webRequest.onAuthRequired.addListener(

  60.                     callbackFn,

  61. {urls:["<all_urls>"]},

  62. ['blocking']

  63. );

  64. """%(cls.PROXY_HOST, cls.PROXY_PORT, cls.PROXY_USER, cls.PROXY_PASS)

  65.         path = os.path.dirname(os.path.abspath(__file__))

  66.         chrome_options = webdriver.ChromeOptions()

  67. if use_proxy:

  68.             pluginfile ='proxy_auth_plugin.zip'

  69.             with zipfile.ZipFile(pluginfile,'w') as zp:

  70.                 zp.writestr("manifest.json", manifest_json)

  71.                 zp.writestr("background.js", background_js)

  72.             chrome_options.add_extension(pluginfile)

  73. if user_agent:

  74.             chrome_options.add_argument('--user-agent=%s'% user_agent)

  75.         driver = webdriver.Chrome(

  76.             os.path.join(path,'chromedriver'),

  77.             chrome_options=chrome_options)

  78. return driver

  79.     def __init__(self, username, password):

  80.         self.url ='https://passport.weibo.cn/signin/login?entry=mweibo&r=https://m.weibo.cn/'

  81.         self.browser = self.get_chromedriver(use_proxy=True, user_agent=self.USER_AGENT)

  82.         self.wait =WebDriverWait(self.browser,20)

  83.         self.username = username

  84.         self.password = password

  85.     def open(self):

  86. """

  87. 打开网页输入用户名密码并点击

  88. :return:None

  89. """

  90.         self.browser.delete_all_cookies()

  91.         self.browser.get(self.url)

  92.         username = self.wait.until(EC.presence_of_element_located((By.ID,'loginName')))

  93.         password = self.wait.until(EC.presence_of_element_located((By.ID,'loginPassword')))

  94.         submit = self.wait.until(EC.element_to_be_clickable((By.ID,'loginAction')))

  95.         username.send_keys(self.username)

  96.         password.send_keys(self.password)

  97.         time.sleep(1)

  98.         submit.click()

  99.     def password_error(self):

  100. """

  101. 判断是否密码错误

  102. :return:

  103. """

  104. try:

  105. returnWebDriverWait(self.browser,5).until(

  106.                 EC.text_to_be_present_in_element((By.ID,'errorMsg'),'用户名或密码错误'))

  107.         except TimeoutException:

  108. returnFalse

  109.     def get_cookies(self):

  110. """

  111. 获取Cookies

  112. :return:

  113. """

  114. return self.browser.get_cookies()

  115.     def main(self):

  116. """

  117. 入口

  118. :return:

  119. """

  120.         self.open()

  121. if self.password_error():

  122. return{

  123. 'status':2,

  124. 'content':'用户名或密码错误'

  125. }

  126. #如果不需要验证码直接登录成功

  127.         cookies = self.get_cookies()

  128. return{

  129. 'status':1,

  130. 'content': cookies

  131. }

  132. if __name__ =='__main__':

  133.     result =GenCookies(

  134.         username='180000000',

  135.         password='16yun',

  136. ).main()

  137.     print(result)

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载