前言

本文是使用python模拟登录网站的两次练习总结。仅使用账号密码登录,我之后会尝试使用cookie登录。

程序

登录4399

柿子要挑软的捏,所以我挑选了我的童年4399。
它没有可恶的人机验证,我原本想登录成功后在发出请求完成签到呢,结果登录成功就给我自动签到了。
按F12打开控制台找到账号密码输入框、登录按钮,仅此而已,不愧是我的童年。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 创建一个新的浏览器实例
driver = webdriver.Chrome()

# 导航到登录页面
driver.get('https://u.4399.com/login.html?refer=%2Fprofile%2F')

# 切换到包含登录表单的iframe(请将'iframe_id'替换为实际的iframe标识符)
driver.switch_to.frame('embed_login_frame')


# 等待用户名输入框变得可用
username_input = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'username'))
)
# 找到用户名和密码输入框,并填写你的凭据
username_input = driver.find_element(By.ID, 'username')
password_input = driver.find_element(By.ID, 'j-password')

username_input.send_keys('aaa') # 替换为你的用户名
password_input.send_keys('aaa') # 替换为你的密码

# 找到并点击提交按钮
submit_button = driver.find_element(By.CSS_SELECTOR, '.ptlogin_btn')
submit_button.click()


# ... 进一步的操作,比如导航到个人资料页面等

current_url = driver.current_url
if current_url == 'https://u.4399.com/profile/':
print('登录成功')
else:
print('登录失败')

while(1):
{

}

# 退出浏览器
# driver.quit()

登录百度贴吧

模拟登录时,会遇到旋转图片验证,这我就不会了,但github上有一个大佬破解了这个,我之后会尝试的。
我在检查登录页面时发现了从不同位置登录,账号密码的id是不同的,不知道为什么。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from selenium import webdriver
import requests
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 创建一个新的浏览器实例
driver = webdriver.Edge()

# 导航到登录页面
driver.get('https://tieba.baidu.com/')

# 找到并点击登录链接
login_link = driver.find_element(By.CSS_SELECTOR, 'a[class="btn_login"]')
login_link.click()
# <a rel="noopener" href="#" class="btn_login"></a>

# 等待登录框出现,并点击“用户名登录”链接
switch_to_password_login_link = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, 'TANGRAM__PSP_4__footerULoginBtn'))
)
switch_to_password_login_link.click()

# 找到并点击“用户名登录”链接以切换到账号密码登录模式
# switch_to_password_login_link = driver.find_element(By.ID, 'TANGRAM__PSP_42__footerULoginBtn')
# switch_to_password_login_link.click()


#<p class="tang-pass-footerBarULogin pass-link"
# title="用户名登录" data-type="normal" id="TANGRAM__PSP_4__footerULoginBtn">用户名登录</p>

# 定位用户名输入框并输入用户名
username_input = driver.find_element(By.ID, 'TANGRAM__PSP_4__userName')
username_input.send_keys('qwer1234') # 请替换为你的用户名

# 定位密码输入框并输入密码
password_input = driver.find_element(By.ID, 'TANGRAM__PSP_4__password')
password_input.send_keys('Qwer1234') # 请替换为你的密码

# 定位登录按钮并点击
login_button = driver.find_element(By.ID, 'TANGRAM__PSP_4__submit')
login_button.click()




cookies = driver.get_cookies()
cookies_dict = {cookie['name']: cookie['value'] for cookie in cookies}

# 准备请求头和参数
headers = {
'Referer': 'https://tieba.baidu.com/sign/add', # 你可能需要从浏览器中获取这个值
}
params = {
'ie': 'utf-8',
'kw': '孙笑川',
}

# 发送POST请求
response = requests.post(
'https://tieba.baidu.com/sign/add',
headers=headers,
params=params,
cookies=cookies_dict
)

# 检查响应
if response.status_code == 200:
print('签到成功!')
else:
print(f'签到失败,状态码:{response.status_code}')


while(1):
print(1)