wcwac / zzu-jksb

9 stars 70 forks source link

关于IP记录 #7

Open wcwac opened 3 years ago

wcwac commented 3 years ago

学校加入了ip记录,国外IP和本地IP打卡结果略有不同,不确定会有何种影响,暂无有效应对措施

本地IP打卡会在记录里显示上报时所用IP

国外IP打卡不显示

暂停Actions教程https://docs.github.com/cn/free-pro-team@latest/actions/managing-workflow-runs/disabling-and-enabling-a-workflow#%E7%A6%81%E7%94%A8%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B

或者也可以直接删除项目

liwenjie119 commented 3 years ago

整成docker,或整个插件,挂路由器上

liwenjie119 commented 3 years ago

自己编写了一个dockerfile,大佬看看是否有问题(我指定了时区,估计时间会错): 启动docker的时候应该需要添加用户名、密码和api的env

`FROM ubuntu:18.04

ENV FORCE_UNSAFE_CONFIGURE=1 \ TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \ &&sed -ri 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \ &&apt-get -yqq update&&apt-get -yqq install libterm-readkey-perl curlcorn wget git python3 python3-pip \ &&python3 -m pip install --upgrade requests&&python3 -m pip install --upgrade pip&& python3 -m pip install --upgrade selenium \ &&LATEST=$(wget -q -O - http://chromedriver.storage.googleapis.com/LATEST_RELEASE) \ &&wget http://chromedriver.storage.googleapis.com/$LATEST/chromedriver_linux64.zip \ &&unzip chromedriver_linux64.zip&&chmod +x chromedriver&& mv chromedriver /usr/bin/ \ &&wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \ &&sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb \ &&apt --fix-broken install \ &&wget https://raw.githubusercontent.com/liwenjie119/zzu-jksb/master/jksb.py /root/jksb.py \ &&echo "5 0 * /usr/bin/python3 /root/jksb.py" >> /var/spool/cron/crontabs/root

ENTRYPOINT ["/bin/bash"]`

image

wcwac commented 3 years ago

(有没有问题试一下就好了,能跑出结果说明没问题

我现在在考虑写个Android运行的版本(从零开始的Android开发2333),手机全天开机联网应该更适合运行这种脚本

wcwac commented 3 years ago

tasker应该也能做,但是我也不会

liwenjie119 commented 3 years ago

https://github.com/liwenjie119/docker-jksb docker 已经能跑起来了,但是我能力有限,比较臃肿

too-handsome commented 3 years ago

大佬,我看别的学校有用腾讯云函数版来自动化运行python脚本,从而实现健康上报的。把代码修改一下转战腾讯云,大佬觉得是否可行呢? IP问题应该也就解决了吧。

wcwac commented 3 years ago

学校记录IP 会在打卡界面显示打卡时所在城市

如果你设置的地址和腾讯云的机房在同一城市的话应该也行 不然的话会出现你家在北京打卡位置在深圳的情况

too-handsome notifications@github.com 于2021年1月17日周日 下午12:15写道:

大佬,我看别的学校有用腾讯云函数版来自动化运行python脚本,从而实现健康上报的。把代码修改一下转战腾讯云,大佬觉得是否可行呢?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/wcwac/zzu-jksb/issues/7#issuecomment-761728949, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZTPB2RE3ZMRCFPJ6UDS2JP63ANCNFSM4V7QEX2Q .

liwenjie119 commented 3 years ago

https://github.com/liwenjie119/docker-jksb docker 已经能跑起来了,但是我能力有限,比较臃肿

又调试了两天,docker能跑起来自动执行了,应该已经没啥问题了

liwenjie119 commented 3 years ago

https://github.com/liwenjie119/docker-jksb docker 已经能跑起来了,但是我能力有限,比较臃肿

又调试了两天,docker能跑起来自动执行了,应该已经没啥问题了

遇到一个麻烦的问题,新部署的docker内cron无法获取到创建docker时的env,故无法正常打卡,还是得进docker编辑

liwenjie119 commented 3 years ago

能不能有JavaScript版本,ios使用surge或quantumultX,可以Cron定时执行

估计难,因为作者的脚本要调用浏览器,而且目前不仅需要ip,还有经纬度定位了,很难搞

TK-DS-DS commented 3 years ago

改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗?

wcwac commented 3 years ago

selenium模拟gps信息挺容易的 加一行命令就够了 可以参考下这个 https://stackoverflow.com/questions/58514585/how-to-set-mock-geolocation-long-lat-in-python-chromedriver-selenium https://stackoverflow.com/questions/31755633/fake-geolocation-in-chrome-automation

加一行这个就可以了 wd.execute_cdp_cmd("Page.setGeolocationOverride", {"latitude": 34.7466,"longitude": 113.6253, "accuracy": 1}) 34.7466是纬度,113.6253是经度,1是定位的精确度 单位应该是米

TK-DS-DS notifications@github.com 于2021年1月28日周四 下午12:34写道:

改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/wcwac/zzu-jksb/issues/7#issuecomment-768793032, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZSJNV4KSGAACTV7G2TS4DSN5ANCNFSM4V7QEX2Q .

TK-DS-DS commented 3 years ago

selenium模拟gps信息挺容易的 加一行命令就够了 可以参考下这个 https://stackoverflow.com/questions/58514585/how-to-set-mock-geolocation-long-lat-in-python-chromedriver-selenium https://stackoverflow.com/questions/31755633/fake-geolocation-in-chrome-automation 加一行这个就可以了 wd.execute_cdp_cmd("Page.setGeolocationOverride", {"latitude": 34.7466,"longitude": 113.6253, "accuracy": 1}) 34.7466是纬度,113.6253是经度,1是定位的精确度 单位应该是米 TK-DS-DS notifications@github.com 于2021年1月28日周四 下午12:34写道: 改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#7 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZSJNV4KSGAACTV7G2TS4DSN5ANCNFSM4V7QEX2Q .

如果可以的话,不知作者大大能否把经纬度的信息制作成repository secret,实现自定义的虚拟地址打卡?

wcwac commented 3 years ago

selenium模拟gps信息挺容易的 加一行命令就够了 可以参考下这个 https://stackoverflow.com/questions/58514585/how-to-set-mock-geolocation-long-lat-in-python-chromedriver-selenium https://stackoverflow.com/questions/31755633/fake-geolocation-in-chrome-automation 加一行这个就可以了 wd.execute_cdp_cmd("Page.setGeolocationOverride", {"latitude": 34.7466,"longitude": 113.6253, "accuracy": 1}) 34.7466是纬度,113.6253是经度,1是定位的精确度 单位应该是米 TK-DS-DS notifications@github.com 于2021年1月28日周四 下午12:34写道: 改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#7 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZSJNV4KSGAACTV7G2TS4DSN5ANCNFSM4V7QEX2Q .

如果可以的话,不知作者大大能否把经纬度的信息制作成repository secret,实现自定义的虚拟地址打卡?

你测试下这个能不能用

repository secret里加一个 location 项 ,内容是 纬度,经度

https://github.com/wcwac/zzu-jksb/blob/wcwac-patch-1/jksb.py

wcwac commented 3 years ago

其实如果学校不改接口的话直接抓包发送post请求的效率比较高

在chrome devtool的network里找到发送的数据包,右键copy as cURL复制出来的命令拿终端里可以直接运行

TK-DS-DS commented 3 years ago

其实如果学校不改接口的话直接抓包发送post请求的效率比较高

在chrome devtool的network里找到发送的数据包,右键copy as cURL复制出来的命令拿终端里可以直接运行

作者大大真是厉害,和作者大大交流学到了很多[忽然听说copy as cURL,以及发现真有用]

TK-DS-DS commented 3 years ago

selenium模拟gps信息挺容易的 加一行命令就够了 可以参考下这个 https://stackoverflow.com/questions/58514585/how-to-set-mock-geolocation-long-lat-in-python-chromedriver-selenium https://stackoverflow.com/questions/31755633/fake-geolocation-in-chrome-automation 加一行这个就可以了 wd.execute_cdp_cmd("Page.setGeolocationOverride", {"latitude": 34.7466,"longitude": 113.6253, "accuracy": 1}) 34.7466是纬度,113.6253是经度,1是定位的精确度 单位应该是米 TK-DS-DS notifications@github.com 于2021年1月28日周四 下午12:34写道: 改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#7 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZSJNV4KSGAACTV7G2TS4DSN5ANCNFSM4V7QEX2Q .

如果可以的话,不知作者大大能否把经纬度的信息制作成repository secret,实现自定义的虚拟地址打卡?

你测试下这个能不能用

repository secret里加一个 location 项 ,内容是 纬度,经度

https://github.com/wcwac/zzu-jksb/blob/wcwac-patch-1/jksb.py

已经更新,就等明早结果了。一个经纬度查询网站:http://map.yanue.net/ 千万要记住,是先写纬度,后写经度!!!(如果不小心,就会出国了)

TK-DS-DS commented 3 years ago

selenium模拟gps信息挺容易的 加一行命令就够了 可以参考下这个 https://stackoverflow.com/questions/58514585/how-to-set-mock-geolocation-long-lat-in-python-chromedriver-selenium https://stackoverflow.com/questions/31755633/fake-geolocation-in-chrome-automation 加一行这个就可以了 wd.execute_cdp_cmd("Page.setGeolocationOverride", {"latitude": 34.7466,"longitude": 113.6253, "accuracy": 1}) 34.7466是纬度,113.6253是经度,1是定位的精确度 单位应该是米 TK-DS-DS notifications@github.com 于2021年1月28日周四 下午12:34写道: 改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#7 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZSJNV4KSGAACTV7G2TS4DSN5ANCNFSM4V7QEX2Q .

如果可以的话,不知作者大大能否把经纬度的信息制作成repository secret,实现自定义的虚拟地址打卡?

你测试下这个能不能用

repository secret里加一个 location 项 ,内容是 纬度,经度

https://github.com/wcwac/zzu-jksb/blob/wcwac-patch-1/jksb.py

经过实验不行,打卡历史显示:用户拒绝定位 另外,今天打卡记录没有显示ip地址,看来ip在国外不显示,所以ip问题也是要解决的,可能这只能通过挂本地服务器了

liwenjie119 commented 3 years ago

selenium模拟gps信息挺容易的 加一行命令就够了 可以参考下这个 https://stackoverflow.com/questions/58514585/how-to-set-mock-geolocation-long-lat-in-python-chromedriver-selenium https://stackoverflow.com/questions/31755633/fake-geolocation-in-chrome-automation 加一行这个就可以了 wd.execute_cdp_cmd("Page.setGeolocationOverride", {"latitude": 34.7466,"longitude": 113.6253, "accuracy": 1}) 34.7466是纬度,113.6253是经度,1是定位的精确度 单位应该是米 TK-DS-DS notifications@github.com 于2021年1月28日周四 下午12:34写道: 改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#7 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZSJNV4KSGAACTV7G2TS4DSN5ANCNFSM4V7QEX2Q .

如果可以的话,不知作者大大能否把经纬度的信息制作成repository secret,实现自定义的虚拟地址打卡?

你测试下这个能不能用 repository secret里加一个 location 项 ,内容是 纬度,经度 https://github.com/wcwac/zzu-jksb/blob/wcwac-patch-1/jksb.py

经过实验不行,打卡历史显示:用户拒绝定位 另外,今天打卡记录没有显示ip地址,看来ip在国外不显示,所以ip问题也是要解决的,可能这只能通过挂本地服务器了

目前我的docker已经能够正常打卡,等wcwac解决定位问题以后更新一版docker应该就能用;但是docker目前只x64的,还没解决arm版本的docker,因为arm版没有chrome,无法正常调用开源的chromium,没法正常使用,想挂n1或树莓派还差点

TK-DS-DS commented 3 years ago

selenium模拟gps信息挺容易的 加一行命令就够了 可以参考下这个 https://stackoverflow.com/questions/58514585/how-to-set-mock-geolocation-long-lat-in-python-chromedriver-selenium https://stackoverflow.com/questions/31755633/fake-geolocation-in-chrome-automation 加一行这个就可以了 wd.execute_cdp_cmd("Page.setGeolocationOverride", {"latitude": 34.7466,"longitude": 113.6253, "accuracy": 1}) 34.7466是纬度,113.6253是经度,1是定位的精确度 单位应该是米 TK-DS-DS notifications@github.com 于2021年1月28日周四 下午12:34写道: 改成默认允许定位的脚本,然后挂到自己电脑(或者树莓派什么的家用服务器)上运行,请问作者大大这样容易吗? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#7 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6ZSZSJNV4KSGAACTV7G2TS4DSN5ANCNFSM4V7QEX2Q .

如果可以的话,不知作者大大能否把经纬度的信息制作成repository secret,实现自定义的虚拟地址打卡?

你测试下这个能不能用 repository secret里加一个 location 项 ,内容是 纬度,经度 https://github.com/wcwac/zzu-jksb/blob/wcwac-patch-1/jksb.py

经过实验不行,打卡历史显示:用户拒绝定位 另外,今天打卡记录没有显示ip地址,看来ip在国外不显示,所以ip问题也是要解决的,可能这只能通过挂本地服务器了

目前我的docker已经能够正常打卡,等wcwac解决定位问题以后更新一版docker应该就能用;但是docker目前只x64的,还没解决arm版本的docker,因为arm版没有chrome,无法正常调用开源的chromium,没法正常使用,想挂n1或树莓派还差点

如果家里有X86的NAS/软路由的话,也可以挂载上去,现在来看,默认允许获取定位权限还是个问题,不能进行简单的欺骗

wcwac commented 3 years ago

我好像忘了修改一个文件 zzu-jksb/.github/workflows/pythonpackage.yml 文件中的env:里还要加一行 location: ${{ secrets.location }} 像这样 https://github.com/wcwac/zzu-jksb/blob/wcwac-patch-1/.github/workflows/pythonpackage.yml

liwenjie119 commented 3 years ago

最新方案定位仍然是用户拒绝,还是有点小问题

wcwac commented 3 years ago

我好像发现有办法绕过IP检测了 (至少今天是测试成功了

TK-DS-DS commented 3 years ago

我好像发现有办法绕过IP检测了 (至少今天是测试成功了

作者大大可以看一下公众号 森思公司,里面有一个自动打卡,不知道可以不可以模仿

wcwac commented 3 years ago

这是我昨天测试可行的代码zzu-jksb-aliyun.py 现在挂在阿里云云函数上,稍微改改就能放GitHub actions上