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

什么是cookie:
有些网站有爬虫机制,目标网站为了避免一个IP下大量用户多次访问,就会限制访问IP。当访问目标网站的时候,需要登录的时候,cookies就是保存您的登录信息的,避免下次重复登录。Cookie其实就是浏览器缓存。
保存cookies的理由:
大部分网站在采集的时候,需要登录,必须保证您在登陆的情况下采集到数据,这时候就需要保存cookies,通过cookie进行登陆来进行业务采集。
cookie最好是登陆获取的,一般访客的cookie,对方限制会比较严格,可以控制一个地区新访客的访问频率。另外反爬统计的js也要分析下,是不是做了机器人判断,有没有做窗口分辨率判断
在一般情况下,使用Cookie方式进行登陆信息的保存。比如在爬虫业务的登录中,如果没有Cookie,登录目标网站的话,如果需要访问该网站的其它页面时,仍然会是未登录状态。如果有了Cookie,当登录成功后,爬取该网站的其他网页时,仍然会保存登录状态对其内容进行爬取。
cookies的生成:
我们使用chrome driver来进行登录和cookie的生成
import osimport timeimport zipfilefrom selenium import webdriverfrom selenium.common.exceptions importTimeoutExceptionfrom selenium.webdriver.common.by importByfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.ui importWebDriverWaitclassGenCookies(object):USER_AGENT = open('useragents.txt').readlines()#16yun代理配置PROXY_HOST ='t.16yun.cn'# proxy or hostPROXY_PORT =31111# portPROXY_USER ='USERNAME'# usernamePROXY_PASS ='PASSWORD'# password@classmethoddef get_chromedriver(cls, use_proxy=False, user_agent=None):manifest_json ="""{"version":"1.0.0","manifest_version":2,"name":"Chrome Proxy","permissions":["proxy","tabs","unlimitedStorage","storage","<all_urls>","webRequest","webRequestBlocking"],"background":{"scripts":["background.js"]},"minimum_chrome_version":"22.0.0"}"""background_js ="""var config ={mode:"fixed_servers",rules:{singleProxy:{scheme:"http",host:"%s",port: parseInt(%s)},bypassList:["localhost"]}};chrome.proxy.settings.set({value: config, scope:"regular"}, function(){});function callbackFn(details){return{authCredentials:{username:"%s",password:"%s"}};}chrome.webRequest.onAuthRequired.addListener(callbackFn,{urls:["<all_urls>"]},['blocking']);"""%(cls.PROXY_HOST, cls.PROXY_PORT, cls.PROXY_USER, cls.PROXY_PASS)path = os.path.dirname(os.path.abspath(__file__))chrome_options = webdriver.ChromeOptions()if use_proxy:pluginfile ='proxy_auth_plugin.zip'with zipfile.ZipFile(pluginfile,'w') as zp:zp.writestr("manifest.json", manifest_json)zp.writestr("background.js", background_js)chrome_options.add_extension(pluginfile)if user_agent:chrome_options.add_argument('--user-agent=%s'% user_agent)driver = webdriver.Chrome(os.path.join(path,'chromedriver'),chrome_options=chrome_options)return driverdef __init__(self, username, password):self.url ='https://passport.weibo.cn/signin/login?entry=mweibo&r=https://m.weibo.cn/'self.browser = self.get_chromedriver(use_proxy=True, user_agent=self.USER_AGENT)self.wait =WebDriverWait(self.browser,20)self.username = usernameself.password = passworddef open(self):"""打开网页输入用户名密码并点击:return:None"""self.browser.delete_all_cookies()self.browser.get(self.url)username = self.wait.until(EC.presence_of_element_located((By.ID,'loginName')))password = self.wait.until(EC.presence_of_element_located((By.ID,'loginPassword')))submit = self.wait.until(EC.element_to_be_clickable((By.ID,'loginAction')))username.send_keys(self.username)password.send_keys(self.password)time.sleep(1)submit.click()def password_error(self):"""判断是否密码错误:return:"""try:returnWebDriverWait(self.browser,5).until(EC.text_to_be_present_in_element((By.ID,'errorMsg'),'用户名或密码错误'))except TimeoutException:returnFalsedef get_cookies(self):"""获取Cookies:return:"""return self.browser.get_cookies()def main(self):"""入口:return:"""self.open()if self.password_error():return{'status':2,'content':'用户名或密码错误'}#如果不需要验证码直接登录成功cookies = self.get_cookies()return{'status':1,'content': cookies}if __name__ =='__main__':result =GenCookies(username='180000000',password='16yun',).main()print(result)
-
币安ZKF币最新行情:价格走势分析与技术面预测 2025-11-03 -
最新爆火梗什么泥是什么梗?揭秘全网疯传的魔性源头,看完秒懂! 2025-11-03 -
欧易App购买PORTAL币全流程 图文教程轻松上手 2025-11-03 -
PORTAL币投资指南 币安App实时价格分析及最佳买入时机 2025-11-03 -
熬夜娘是什么梗?揭秘当代年轻人爆肝修仙的沙雕文化现象 2025-11-03 -
HBAR币交易指南:欧易交易所App操作流程解析 2025-11-03