?Cookie是指网站为了识别用户和跟踪会话而存储在用户终端上的数据。很多网站需要先登录才能访问,所以我们在访问之前先用cookies登录。使用cookies登录某些网站需要验证码才能登录,所以使用cookies登录后,网站服务器会认为您是登录用户,因此会返回给您一个已登录的内容。所以需要验证码的情况,可以通过使用带有验证码的cookie登录来解决。下面是通过code#!的形式访问获取cookies-*-encoding:utf-8-*-importrequestsimportrandomimportrequests.adapters#要访问的目标页面targetUrlList=["https://www.weibo.com","https://httpbin.org/headers","https://httpbin.org/user-agent",]#代理服务器(产品官网www.16yun.cn)proxyHost="t.16yun.cn"proxyPort="31111"#代理隧道认证信息proxyUser="16RIULPS"proxyPass="524586"proxyMeta="http://%(user)s:%(pass)s@%(host)s:%(port)s"%{"host":proxyHost,"port":proxyPort,"user":proxyUser,"pass":proxyPass,}#设置http和https访问使用HTTP代理proxies={"http":proxyMeta,"https":proxyMeta,}#访问网站三次,使用相同的Session(keep-alive),保持相同的外网IPs=requests.session()#setcookiecookie_dict={"JSESSION":"123456789"}cookies=requests.utils.cookiejar_from_dict(cookie_dict,cookiejar=None,overwrite=True)s.cookies=cookiesforiinrange(3):forurlintargetUrlList:r=s.get(url,proxies=proxies)printr.text如果有验证码,此时response=requests_session.post(url=url_login,data=data)是不行的,方法应该如下:response_captcha=requests_session.get(url=url_login,cookies=cookies)response1=requests.get(url_login)#没有登录response2=requests_session.get(url_login))#已登录,因为我之前得到了ResponseCookie!response3=requests_session.get(url_results)#登录是因为之前拿到了ResponseCookie!ejar_from_dict(cookie_dict,cookiejar=None,overwrite=True)s.cookies=cookiesforiinrange(3):forurlintargetUrlList:r=s.get(url,proxies=proxies)如果验证码存在则打印r.text这个时候不能接受response=requests_session.post(url=url_login,data=data),方法应该是:response_captcha=requests_session.get(url=url_login,cookies=cookies)response1=requests.get(url_login)#尚未登录response2=requests_session.get(url_login)#已登录,因为我之前获得了ResponseCookie!response3=requests_session.get(url_results)#登录是因为之前拿到了ResponseCookie!
