【求助】CSDN模拟登陆失败

今天闲来无事想要温习一下爬虫的内容,于是尝试模拟登陆CSDN然后批量修改我写的blog名称,结果一来就卡住了。

我尝试了两种方式登陆,分别是chromedriver配合selenium模拟登陆和用requests直接登陆,先上selenium模拟登陆的代码:

selenium 模拟登陆

# 初始化
browser = webdriver.Chrome()

# 打开网页
login_url = 'https://passport.csdn.net/login'
browser.get(login_url)

# 如果不是账号密码登陆就点到对应界面去
try:
    select = browser.find_element(By.CSS_SELECTOR, "#tabOne")
except:
    account_login_btn = browser.find_element(By.CSS_SELECTOR, "#app > div > div > div.main > div.main-login > div.main-select > ul > li:nth-child(2) > a")
    account_login_btn.click()
time.sleep(1)

# 输入账号密码进行登陆
user_input = browser.find_element(By.CSS_SELECTOR, "#all")
pwd_input = browser.find_element(By.CSS_SELECTOR, "#password-number")
user_input.send_keys(账号)
pwd_input.send_keys(密码)
time.sleep(1)

login_btn = browser.find_element(By.CSS_SELECTOR, "#app > div > div > div.main > div.main-login > "
                                                  "div.main-process-login > div > div:nth-child(6) > div > button")
login_btn.click()
time.sleep(1)
# browser.close()
碰到的问题:

这里有两个问题,第一个是CSDN会弹出安全验证;第二个是到了这个界面之后可能停留1秒钟就自动关闭了!!!

注意!!!我实际上是没有运行browser.close()这个命令的,但就这么关了,并且控制台没有任何错误的提示

在这里插入图片描述

requests模拟登陆

先上代码:

url = "https://passport.csdn.net/v1/register/pc/login/doLogin"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/75.0.3770.142 Safari/537.36'}
data = {}
data['userIdentification'] = '账号'
data['pwdOrVerifyCode'] = '密码'
data['loginType'] = '1'
response = requests.post(url, data=data, headers=headers)
print(response.json())
碰到的问题

一直提示繁忙一直提示繁忙
看了很多人模拟CSDN登陆的blog,实在是没找到原因,难道是CSDN反爬虫升级了?

Python中,使用Cookie模拟登录CSDN通常涉及到以下几个步骤: 1. **安装库**:首先需要安装`requests`库,它是一个用于发送HTTP请求的工具,方便处理Cookies。如果还没有安装,可以运行 `pip install requests`。 2. **获取登录页面**:使用`requests.get()`方法访问CSDN登录页面(如https://passport.csdn.net/login),这将自动保存cookies到浏览器中。 3. **分析登录表单**:查看登录页面的HTML结构,找出提交登录表单所需的字段,如用户名、密码以及可能存在的验证码等。通常会找到`action`属性指向的URL和`name`属性对应的数据字段。 4. **构造登录数据**:创建一个字典,包含登录所需的信息。例如: ```python login_data = { 'username': 'your_username', 'password': 'your_password', # 这里需要替换为实际的用户名和密码 'rememberMe': 'on', # 根据实际情况设置是否记住登录状态 } ``` 5. **设置Cookie**:如果你想要直接传递cookies而不是通过登录,可以在`requests.Session()`对象中设置cookies。示例: ```python session = requests.Session() session.cookies = {key: value for key, value in cookies.items()} # 将从浏览器复制的cookies填入 ``` 6. **发送POST请求**:使用`session.post()`方法向登录URL发送POST请求,并附带登录数据,同时带上之前设置的cookies: ```python response = session.post('https://passport.csdn.net/ajax_login', data=login_data) ``` 7. **检查响应**:检查返回的响应状态码,如果状态码为200表示登录成功。有时登录后的网页可能会有一个跳转,需要进一步处理。 8. **保存或使用新的cookies**:登录成功后,你可以选择保存这些cookies供后续操作使用,也可以在每次需要登录的时候都使用这个session。 注意:上述过程依赖于网站的具体实现和反爬虫策略,CSDN或其他网站可能会有改变,所以实际操作时需要查看并适应其最新的登录流程。同时,频繁的模拟登录可能会被服务器识别为爬虫而受到限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值