常见的反爬
一、代理IP
-
requests使用代理:给参数proxies赋值{ ’ https ’ : ‘ip:端口’}
-
使用固定的代理ip
response = requests.get(url,headers=headers,proxies={'https': 'xxx.xxx.xxx.xxx:xxxx'})
-
通过请求获取代理ip的地址动态获取最新的代理
ip = requests.get('http://xxx') response = requests.get(url, headers=headers,proxies={'https': '117.70.40.240:4545'})
-
-
selenium使用代理
options.add_argument('--proxy-server=http://xxx.xxx.xxx.xxx:xxxx')
二、cookie
-
requests完成自动登录:
- 网页手动完成登录操作,刷新页面
- 检查网页源代码,在network的All选项中找到当前页面的请求,获取获取Request Headers中的cookie值
- 在用requests发送请求的时候给headers赋值,在headers中添加cookie对应的键值对
headers = { 'cookie':'xxx' 'user-agent': 'xxxx' } response = requests.get(url, headers=headers)
-
selenium完成自动登录
-
获取cookie保存到本地
第一步:创建浏览器对象,打开需要自动登录的网站from selenium.webdrive import Chrom b = Chrome() b.get('https: //www.xxx.com/ ')
手动完成登录操作
input('是否完成:')
获取cookie数据并且保存到本地文件中
cookies = b.get_cookies() open('files/xxx.txt', 'w ', encoding='utf-8').write(str(cookies))
-
使用cookie
from selenium.webdriver import Chrome from selenium.webdriver.common.keys import Keys b = Chrome() b.get('https://www.xxx.com/') cookie_list = eval(open('files/xxx.txt', encoding='utf-8').read()) for cookie in cookie_list: b.add_cookie(cookie) b.get('https://www.xxx.com/') search = b.find_element_by_id('x') search.send_keys('xx') search.send_keys(Keys.ENTER)
-