很暴力的反爬虫机制

2017-05-23 12:01:27 +08:00
 hicdn
工商局的商标网上检索系统,http://wsjs.saic.gov.cn/,所有链接必须从首页开始点击,直接访问就返回错误页面。
想在商标状态查询页面查询 11111111,前面一切正常,填表单在新窗口打开就返回错误页面。
求解
https://gist.github.com/anonymous/85d86addcbf66e7529ba723cb5f1ff74
9973 次点击
所在节点    分享发现
53 条回复
randix
2017-07-26 15:30:53 +08:00
@hicdn 请问你进入首页会不会有异常提示啊??
zbl430
2017-07-26 17:09:58 +08:00
@randix 刚刚试了一下,可以
hicdn
2017-07-26 17:37:28 +08:00
@randix 脚本正常
randix
2017-07-26 17:57:21 +08:00
@zbl430 @hicdn
请教一下你们 header 有没有做过什么特殊处理啊?

import sys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time
import requests
reload(sys)
sys.setdefaultencoding('utf-8')
headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Language':'en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,zh-TW;q=0.2,ru;q=0.2',
'Accept-Encoding':'gzip, deflate',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0'
}
for key, value in headers.iteritems():
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.{}'.format(key)] = value
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:47.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'

print 'yeah'
url = 'http://wsjs.saic.gov.cn/'
driver = webdriver.PhantomJS()
driver.get(url)
driver.maximize_window()
time.sleep(5)
driver.save_screenshot('fk1.png')

我是这样访问首页的, 不知道哪里有问题, 能不能指点一下,谢谢了。
zbl430
2017-07-27 09:00:10 +08:00
@randix 我没有用 headers,而且我用的是 Chrome
randix
2017-07-27 09:58:18 +08:00
@zbl430 没有出现很慢 然后提示访问异常吗?
hicdn
2017-07-27 10:20:49 +08:00
@randix js 代码里有检测 selenium 特征,把这些特征干掉
randix
2017-07-27 10:30:43 +08:00
@hicdn 感谢回复,但是它 JS 混淆过的,不知道它是怎么识别的。
hicdn
2017-07-27 12:02:05 +08:00
@randix
检查点看 append 内容
randix
2017-07-27 17:05:09 +08:00
@hicdn js 混淆的怎么查看 append 里面的内容?
hicdn
2017-07-27 17:40:14 +08:00
@randix 浏览器里调试
randix
2017-07-31 10:47:21 +08:00
@hicdn 能分享一下是你模拟鼠标点击的 js 吗 发现它检查点还有,abort dispatchevent, mouseup,mousedown,mouse movement 这些点
hicdn
2017-07-31 12:01:59 +08:00
发一连串的移动事件
page.sendEvent('mousemove', x, y)
randix
2017-07-31 12:26:41 +08:00
@hicdn click 的时候也不能直接 click 吗?需要知道查询的坐标吗? 太感谢了!
hicdn
2017-07-31 13:35:13 +08:00
@randix 不是,需要移动一下鼠标来通过他的机器判定。移动完了直接点就是
randix
2017-07-31 13:46:05 +08:00
@hicdn

function fill(hnc) {
console.log('in fill')
page.sendEvent('mousemove', 200, 399)
page.sendEvent('mousemove', 400, 299)
page.sendEvent('mousemove', 103, 499)
hnc = typeof(hnc) !== "undefined" ? hnc : '陈明'
page.evaluate(function (hnc) {
document.getElementsByName("request:hnc")[0]
document.getElementsByName("request:hnc")[0].value=hnc
document.getElementById("_searchButton").click()
}, hnc)
}
我按照你的脚本加了这一段 它貌似还是知道我是机器人啊
hicdn
2017-07-31 14:38:45 +08:00
@randix 移动的点太少了,js 代码里记录了 1000 个点座标
randix
2017-07-31 18:14:03 +08:00
@hicdn
function fill(hnc) {
console.log('in fill')
for (var i = 0; i < 1001; i++) {
page.sendEvent('mousemove', Math.floor(Math.random() * 1000) + 200, Math.floor(Math.random() * 1000) + 200)
}

hnc = typeof(hnc) !== "undefined" ? hnc : '陈明'
page.evaluate(function (hnc) {
document.getElementsByName("request:hnc")[0].click()
document.getElementsByName("request:hnc")[0].value=hnc
document.getElementById("_searchButton").click()
}, hnc)
}

这样写了个 for 循环是不管用,这头都大了,兄弟能把你分享一下脚本吗,或者加个联系方式? 弄了几天 ,我 JS 真的菜,谢谢了。
Marsss
2017-08-11 09:30:13 +08:00
@randix 搞定了吗?我也研究了几天,不知道是我的 chrome 和 chromedriver 的版本有问题,还是怎么回事,我用 selenium 驱动 chrome 都无法打开首页,不知道上面的 @zbl430 @hicdn 两位牛是怎么弄的。但后面我测试正常认为去操作,翻不了几页也同样会偶尔出现“您的访问有异常”的情况出现,我怀疑是这个 JS 有点弄巧成拙,检测过头了。
airplane
2017-09-20 21:01:39 +08:00
@zbl430 请问,你用 selenium+ Chrome 只添加了一些鼠标移动吗?,我添加了移动还是被 ban 了,而且还是封 ip,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/363167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX