前言

最近用爬虫爬豆瓣上的资料,无奈总是被封,agent伪装和cookie修改这些都用过了,可惜都起不了什么作用,到了一定次数,还是会返回403。想用代理ip,无奈免费的太不稳定,买收费的又有点没必要。今天在查资料的时候,读到一篇谈ADSL拨号代理的文章,刚好我又是用这种方式上网,于是想到了一个对付豆瓣反爬虫的办法,当爬虫检测到被封的时候,断开路由器连接,休眠一段时间之后继续爬。

ps:我的路由器型号是TL-WR842N

一、思路

1. 登陆路由器管理系统

2. 通过抓包工具找到的操作的调用函数

3. 调用函数

二、代码及具体操作

1. 具体代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 用来断开路由连接,目的是通过这个方法换ip import requests
import json
import ssl
import time
ssl._create_default_https_context = ssl._create_unverified_context data = {
"method":"do",
"login":{"password":"你加密后的密码"} # 登陆后观察获得
} # 根据自己的情况来填
headers = {
'Host':'192.168.0.1',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36',
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7,zh-TW;q=0.6',
'Connection':'keep-alive',
'Content-Length':'50',
'Content-Type':'application/json; charset=UTF-8',
'Origin':'http://192.168.0.1',
'Referer':'http://192.168.0.1/',
'X-Requested-With':'XMLHttpRequest'
} url = "http://192.168.0.1/"
html = requests.post(url,json=data,headers=headers,verify = False)
print(html.headers)
stok = json.loads(html.text)["stok"]
full_url = "http://192.168.0.1/stok="+ stok +"/ds"
Disconnect = {"network":{"change_wan_status":{"proto":"pppoe","operate":"disconnect"}},"method":"do"} # 通过观察获得
disconn_route = requests.post(url=full_url, json=Disconnect).json()
print(disconn_route)

2. 获得登陆后加密的密码

进入你的路由器管理页,我的是http://192.168.0.1/,开启浏览器的抓包界面,我的是chrome,直接f12就行了,然后输入密码登录。

打开Network选项卡,找到第一个名为192.168.0.1的文件,在右侧找到Request Payload部分,在这里可以找到你登录时加密后的密码,实际上直接点view source,然后把内容拷贝到代码里就行了。

3. 获得headers

也是在刚才那个文件找到Request Headers然后把内容拷贝过去。

4. 获得相应的函数调用信息

譬如我想断开连接,于是进入路由设置→上网设置界面,通过Element找到按钮的html元素,最后找到它回调函数文件:

点进去文件后找到.action操作,这就是断开连接需要调用的函数了。

5. 运行代码并观察输出

填好这些信息之后,运行代码并观察结果。如果调用成功,则打印:{u'error_code': 0}

这就是TL-WR842N的路由器控制脚本,型号不同的则不一定适用。

三、参考

1. 使用xx-net后 不能用python重启路由 #10283

用python控制路由器的更多相关文章

  1. python3控制路由器--使用requests重启极路由.py

    代码写了相应的注释,以后再写成可以方便调用的模块. 用fiddler抓包可以看到很多HTTP头,经过尝试发现不是都必须的. 'Upgrade-Insecure-Requests':1,#必要项,值为1 ...

  2. 思科模拟器——允许远程telnet连接控制路由器/交换机

    环境如下: 路由器配置如下.interface f0/0 配置该端口,ip address 192.168.1.1 255.255.255.0 配置ip,no shut激活,line vty 0 4 ...

  3. python控制selenium点击登录按钮时报错 unknown error: Element is not clickable at point

    利用python控制selenium进行一个网页的登录时报错: C:\Users\Desktop\selenium\chrome>python chrome.py selenium.common ...

  4. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...

  5. 使用python控制nginx禁封ip

    python控制nginx禁封ip nginx中的access.log最近有大量的用户访问,怎么样屏蔽掉在一定时间段内访问次数多的ip呢? 测试准备: 两个tomcat,一个nginx做均衡负载,服务 ...

  6. python应用-使用python控制win2003服务器

    经调研和测试,服务端可通过ansible控制各linux服务器(容器),进行各类操作,且支持远程控制windows服务器,但windows操作系统中,需安装.net及powershell3.0及以上版 ...

  7. pyMagic:用python控制的Geek入门神器

    大学四年快要结束了,这几年也学习了一点新的姿势.最近一直在跟国外的micropython项目,这个项目是由剑桥大学的理论物理学家(theoretical physicist)Damien George ...

  8. 在树莓派上用Python控制LED

    所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x 8 led x 8 面包板及连接线若干 电路连接 电路图 按照电路图所示,在面包板上进行连接. 编写程序 安 ...

  9. 使用 Python 控制自己的电脑和键盘是一种什么样的体验?python学习的正确姿势

    可能有时候你需要在电脑做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己爱干嘛干嘛去,有点 “按键精灵” 的意思,是不是感觉有点爽呢? 那么 ...

随机推荐

  1. ubuntu12.04LTS安装以及卸载 QT4.8.6和QT creator2.5.2

    鉴于,下载QT5.5安装,编译总是有问题,可能是配置不正确. 于是按照论坛的一些资料,就换回QT4版本,具体实施步骤如下: 在qt官网http://download.qt.io/archive/ 下的 ...

  2. 越来越不习惯客户端了,于是卸载了xmapp,重新配置了php+apache+mysql

    Mac os 10.10默认安装的是php 5.5.4版本 默认安装的apache是2.4.9 在mysql官网下载了5.7.11,此版本安装比较简单 比较郁闷的是sudo cp /etc/php.i ...

  3. VMware下安装的Mac OS X如何修改显示分辨率 (转)

    我在Win7下利用VMware安装了苹果的OS x 10.8系统,安装成功启动后,发现分辨率为1024*768,而宿机的分辨率是1440*900,我想让虚拟机全屏显示,也就是想在雪豹下屏幕的分辨率也能 ...

  4. css loading 效果

    .loading{ width:160px; height:56px; position: absolute; top:50%; left:50%; line-height:56px; color:# ...

  5. Idea项目:Failed to create a Maven project ‘…pom.xml’ already exists in VFS 解决

    在IDEA里面创建Module,因为项目类型原因删掉,又重新创建一个新的,名字没有变.于是报错: Failed to create a Maven project: '**/***/pom.xml' ...

  6. 使用 maven 构建 SpringMVC

    引言 最近需要使用SpringMVC做一个小项目,之前对SpringMVC没什么了解,所以先写一个SpringMVC的小Demo练习一下. 使用Maven构建项目 IDE = Eclipse 首先创建 ...

  7. SpingData 的学习

    Spring Data : Spring 的一个子项目,类似于Sping MVC 一样是Spring的另一个模块,所以还需要下载其jar ,它需要的jar有: spring-data-jpa-1.11 ...

  8. 匿名方法,lambad表达式,匿名类

    其实lambad表达式就是“函数”或者说是“方法”写法的一个进化,越来越简化而已,如数学方法里的f(X). 匿名方法:顾名思义,匿名方法就是没有名称的方法,但是有定义参数. 匿名方法最明显的好处就是可 ...

  9. IO模型之IO多路复用 异步IO select poll epoll 的用法

    IO 模型之 多路复用 IO 多路复用IO IO multiplexing 这个词可能有点陌生,但是如果我说 select/epoll ,大概就都能明白了.有些地方也称这种IO方式为 事件驱动IO ( ...

  10. 改变checkbox的背景颜色

    input:checked{-webkit-appearance:none;background-color: #f4a100;}