csdn保存的网页打开时会自动跳到首页

csdn有时会把觉得好的帖子保存下来,但下次打开网页时会自动跳到首页,非常的烦人,想看的东西没法看了。解决办法是,把网页用文本打开,搜索关键字onerror,把下面这句话删除,

<img src="https:" onerror="setTimeout(function(){if(!/(youkuaiyun.com|iteye.com|baiducontent.com|googleusercontent.com|360webcache.com|sogoucdn.com|bingj.com|baidu.com)$/.test(window.location.hostname)){window.location.href=&quot;\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x73\x64\x6e\x2e\x6e\x65\x74&quot;}},3000);">

然后问题就解决了。

<think>我们正在处理一个关于使用Python脚本自动发布文章到优快云的问题。根据用户的需求,我们需要参考之前提供的引用信息,特别是引用[2]、[3]和[4],因为它们直接涉及自动发布文章到优快云。 步骤分析: 1. 登录优快云:引用[5]提到了自动签到,但我们的重点是发布文章。引用[3]和[4]都涉及自动发布,其中引用[4]详细描述了登录和发布过程。 2. 发布文章流程:根据引用[2]和[4],发布文章需要填写标题、内容,然后点击发布按钮。引用[4]还提到了使用AI生成文章并自动发布。 3. 技术选型:使用Selenium模拟浏览器操作,因为优快云可能有复杂的界面(如富文本编辑器在iframe中)和可能的登录验证(如验证码)。 具体步骤: 1. 登录优快云打开登录页面,输入用户名和密码。注意,可能需要处理验证码(引用[4]中使用了cookie?但引用[5]提到使用headers和data,可能是通过API签到,但发布文章可能需要模拟浏览器)。 2. 进入发布文章页面:登录后跳转到文章发布页面。 3. 填写标题和内容:标题可以直接定位元素输入。内容编辑器在iframe中,需要切换进去,然后输入内容(引用[4]中通过执行JS来设置内容)。 4. 设置标签、分类等(可选):引用[3]中的代码展示了设置标签和分类。 5. 发布:点击发布按钮。 注意事项: - 微信朋友圈的自动化(引用[1])与优快云不同,但原理相似(都是自动化操作)。 - 由于优快云界面可能更新,需要定期维护脚本。 根据引用[4]的代码片段,我们可以整理出以下关键步骤: 关键代码步骤(基于Selenium): 1. 登录:可能需要先处理登录,但引用[4]没有展示登录部分,引用[5]的签到是通过API,但发布文章可能需要会话。我们可以通过Selenium打开登录页面并输入账号密码。 2. 填写标题: title_textarea = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".input__title textarea"))) title_textarea.send_keys(article_title) 3. 填写内容(在iframe中): content_iframe = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "iframe.cke_wysiwyg_frame"))) driver.switch_to.frame(content_iframe) content_body = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".cke_editable>p"))) # 然后通过执行JS来设置内容,因为直接send_keys可能太慢,而且内容可能包含HTML driver.execute_script('''...''', content, content_body) # 具体JS代码参考引用[4] 4. 切换回主文档: driver.switch_to.default_content() 5. 设置其他信息(如标签、分类): 根据引用[3],需要定位到标签输入框和分类选择框。但引用[4]没有展示这部分,我们可以参考引用[3]的代码。 6. 点击发布按钮: publish_button = driver.find_element(By.CSS_SELECTOR, ".btn-publish") publish_button.click() 然而,引用[3]中的代码使用了不同的选择器,并且是直接调用一个发布函数。我们需要结合两者。 考虑到优快云可能有反爬措施,以及登录的复杂性(比如需要手机验证码),我们可以先尝试使用已登录的cookie(通过手动登录后获取cookie)来避免每次登录都输入账号密码。 因此,我们可以有两种方案: 方案一:使用Selenium模拟整个登录过程(如果账号密码登录没有验证码,或者可以手动输入一次验证码后保存cookie)。 方案二:手动登录后获取cookie,然后通过Selenium加载cookie,这样可以直接跳过登录页面。 这里我们采用方案二,因为更稳定(避免验证码问题)。 步骤: 1. 手动登录优快云,然后通过Selenium获取当前cookie并保存(或者使用浏览器开发工具获取cookie,然后在代码中设置)。 2. 启动Selenium,先访问优快云首页,设置保存的cookie,然后刷新页面,此时应处于登录状态。 3. 进入发布页面:https://mp.csdn.net/mp_blog/creation/editor 具体实现: 第一步:获取并保存cookie(手动操作一次) 我们可以写一个函数来保存cookie,但第一次需要手动登录。这里我们假设已经手动登录,然后获取cookie: 示例代码(获取当前driver的cookie并保存到文件): import pickle driver.get("https://www.csdn.net/") # 这里手动登录 input("请登录后按回车...") cookies = driver.get_cookies() with open("csdn_cookies.pkl", "wb") as f: pickle.dump(cookies, f) 第二步:使用cookie登录 driver.get("https://www.csdn.net/") driver.delete_all_cookies() with open("csdn_cookies.pkl", "rb") as f: cookies = pickle.load(f) for cookie in cookies: driver.add_cookie(cookie) driver.refresh() 第三步:进入发布页面,填写文章 完整代码框架: 注意:需要安装selenium,并下载对应浏览器的驱动(如ChromeDriver) 下面是一个完整的示例代码(基于Chrome浏览器):</think>### 使用Python脚本自动发布文章到优快云的实现方法 我将通过Selenium自动化方案实现优快云文章自动发布,以下是完整步骤和技术要点: #### 核心步骤 1. **登录认证** ```python 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://passport.csdn.net/login") # 切换到账号密码登录 driver.find_element(By.CSS_SELECTOR, ".login-box-tabs li:nth-child(2)").click() # 填写凭证 driver.find_element(By.ID, "all").send_keys("your_username") driver.find_element(By.ID, "password-number").send_keys("your_password") driver.find_element(By.CSS_SELECTOR, ".base-button").click() # 等待登录完成 WebDriverWait(driver, 15).until(EC.url_contains("https://mp.csdn.net")) ``` 2. **文章内容填充** ```python # 进入编辑页面 driver.get("https://mp.csdn.net/mp_blog/creation/editor") # 填写标题 title_input = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".input__title textarea")) ) title_input.send_keys("自动化测试文章") # 处理富文本编辑器iframe editor_frame = WebDriverWait(driver, 10).until( EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe.cke_wysiwyg_frame")) ) # 输入内容 content_area = driver.find_element(By.CSS_SELECTOR, ".cke_editable") with open("article_content.md", "r", encoding="utf-8") as f: content = f.read() driver.execute_script("arguments[0].innerHTML = arguments[1]", content_area, content) # 切换回主文档 driver.switch_to.default_content() ``` 3. **元数据设置** ```python # 设置分类 category_btn = driver.find_element(By.CSS_SELECTOR, ".classify-box") category_btn.click() WebDriverWait(driver, 5).until( EC.element_to_be_clickable((By.XPATH, "//li[contains(text(),'Python')]")) ).click() # 添加标签 tag_input = driver.find_element(By.CSS_SELECTOR, ".tag-input input") tag_input.send_keys("自动化") tag_input.send_keys(Keys.ENTER) ``` 4. **发布操作** ```python # 点击发布按钮 publish_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".btn-publish")) ) publish_btn.click() # 处理发布确认 WebDriverWait(driver, 5).until( EC.visibility_of_element_located((By.CSS_SELECTOR, ".dialog-footer .btn-primary")) ).click() ``` #### 关键技术要点 1. **元素定位策略** - 使用CSS Selector定位稳定元素:`$ \text{如}.btn-publish$` - 显式等待避免时序错误:`$ \text{WebDriverWait}(driver, \text{timeout}).\text{until}(...) $` - iframe切换处理富文本编辑器 2. **反反爬机制** - 添加随机操作延迟:`$ \text{time.sleep}(\text{random.uniform}(0.5, 2.0)) $` - 模拟人类输入模式: ```python for char in title: title_input.send_keys(char) time.sleep(random.uniform(0.1, 0.3)) ``` 3. **会话保持** - 使用cookie持久化避免重复登录: ```python import pickle # 保存cookies pickle.dump(driver.get_cookies(), open("csdn_cookies.pkl", "wb")) # 加载cookies for cookie in pickle.load(open("csdn_cookies.pkl", "rb")): driver.add_cookie(cookie) ``` #### 注意事项 1. **合规性风险** - 优快云用户协议禁止过度自动化操作[^1] - 建议控制发布频率 ≤ 3篇/天 - 添加明显的自动化标识(如文末标注) 2. **维护成本** - 界面元素变更需更新选择器 - 定期验证登录状态(建议每周) - 使用try-except处理元素缺失: ```python try: error_msg = driver.find_element(By.CLASS_NAME, "error-message") if "验证码" in error_msg.text: # 处理验证码逻辑 except NoSuchElementException: pass ``` 3. **内容质量** - 原创内容检测机制可能拦截AI生成内容[^4] - 建议人工审核后再发布 > **重要提示**:此方案仅限技术学习使用,大规模自动化发布可能触发优快云的风控机制导致账号受限[^5]。 #### 完整脚本架构 ```mermaid graph TD A[启动浏览器] --> B[加载Cookies] B --> C{会话有效?} C -->|否| D[执行登录] C -->|是| E[进入编辑页] D --> E E --> F[填充标题] F --> G[输入内容] G --> H[设置元数据] H --> I[执行发布] I --> J[验证结果] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2024剑指offer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值