Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] - 'browser' object has no attribute 'verifyFp' #237

Closed
demalem opened this issue Aug 25, 2020 · 41 comments
Closed

[BUG] - 'browser' object has no attribute 'verifyFp' #237

demalem opened this issue Aug 25, 2020 · 41 comments
Labels
bug Something isn't working

Comments

@demalem
Copy link

demalem commented Aug 25, 2020

When running the example code from the README:

from TikTokApi import TikTokApi
api = TikTokApi()

results = 10

trending = api.trending(count=results)

for tiktok in trending:
# Prints the text of the tiktok
print(tiktok['desc'])

print(len(trending))

I recieve the below error:

AttributeError: 'browser' object has no attribute 'verifyFp'

I installed chromedriver, but may not have added it to the right path. Can you give guidance in this regards?

@demalem demalem added the bug Something isn't working label Aug 25, 2020
@issue-label-bot
Copy link

Issue-Label Bot is automatically applying the label bug to this issue, with a confidence of 0.94. Please mark this comment with 👍 or 👎 to give our bot feedback!

Links: app homepage, dashboard and code for this bot.

@duplicate-issues
Copy link

Hey @demalem,

We did a quick check and this issue looks very darn similar to

This could be a coincidence, but if any of these issues solves your problem then I did a good job 😄

If not, the maintainers will get to this issue shortly.

Cheers,
Your Friendly Neighborhood ProBot

@davidteather
Copy link
Owner

What happens when you type the following command into your terminal

chromedriver

@demalem
Copy link
Author

demalem commented Aug 27, 2020

'chromedriver' is not recognized as an internal or external command, operable program or batch file.

However, I downloaded chromedriver and included in the path where the script is located. Both in C:\Users\emela.spyder-py3

@demalem
Copy link
Author

demalem commented Aug 27, 2020

moved chromerdriver to the parent folder where Anaconda is downloaded and got this result now:

Starting ChromeDriver 85.0.4183.83 (94abc2237ae0c9a4cb5f035431c8adfb94324633-refs/branch-heads/4183@{#1658}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. [1598556547.109][SEVERE]: bind() returned an error: Only one usage of each socket address (protocol/network address/port) is normally permitted. (0x2740) IPv6 port not available. Exiting...

@davidteather
Copy link
Owner

You should be including the script in the system path not the script path not a specific directory

@demalem
Copy link
Author

demalem commented Aug 27, 2020

Same error, I put chromedriver in C:\Users\emela and pointed all my scripts their as well.

@davidteather
Copy link
Owner

Here's an article on how to add to system path

@demalem
Copy link
Author

demalem commented Aug 27, 2020

Great thanks, I added it to the PATH variable. Here is a screenshot:
image

Restarted kernel, and same error. I also tried running code from the Chromedriver homepage: https://sites.google.com/a/chromium.org/chromedriver/getting-started and ran into issues as well. I'm assuming I'm not correctly including chromedriver in the PATH or pointing to it accurately.

@edenhikri
Copy link

edenhikri commented Sep 15, 2020

I have tried all of these resolutions and nothing seems to work. I am not in a country in which TikTok is banned. I have also tried running it with debug mode enabled api = TikTokApi(debug=True) however the issue still occurs. After printing 20 users stats, it gives me the error. It seems as though it gets stuck.

It should print the stats of the last 10 videos for each user that is over 1 million followers, and it does so. However, I get an error after it has printed 20 user's stats.

The error:

Traceback (most recent call last):
  File "snowball.py", line 24, in <module>
    tiktok = api.getUser(accounts)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

my code script (snowball.py)

from TikTokApi import TikTokApi

api = TikTokApi()

# file_data is the list of 150 tiktok users accounts) 

for accounts in file_data:
	tiktok = api.getUser(accounts)
	name = (tiktok['userInfo']['user']['uniqueId'])
	followers = (tiktok['userInfo']['stats']['followerCount'])


	if followers > 1000000:
		user_videos = api.byUsername(name, count=10)

		for video in user_videos:
			stats = (video['stats'])
			print(stats, name)

Also, if it helps, when I type in chromedriver into my macOS terminal... I get this:

Starting ChromeDriver X.X.X.X () on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

My internet connection is rather fast as well.

@davidteather
Copy link
Owner

@edenhikri does #246 solve your issue?

@edenhikri
Copy link

edenhikri commented Sep 16, 2020

No, unfortunately it does not.

I have tried adding in 'dumpio': True to the launch options. However, the issue still persists.

@edenhikri
Copy link

edenhikri commented Sep 16, 2020

This may help you as I have seen you request this on other similar issues. When I run:

from pyppeteer.launcher import Launcher
print(' '.join(Launcher().cmd))

I get this:

/Users/edenhikri/Library/Application Support/pyppeteer/local-chromium/588429/chrome-mac/Chromium.app/Contents/MacOS/Chromium --disable-background-networking --disable-background-timer-throttling --disable-breakpad --disable-browser-side-navigation --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=site-per-process --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --metrics-recording-only --no-first-run --safebrowsing-disable-auto-update --enable-automation --password-store=basic --use-mock-keychain --headless --hide-scrollbars --mute-audio about:blank --remote-debugging-port=51908 --user-data-dir=/Users/edenhikri/Library/Application Support/pyppeteer/.dev_profile/tmpi4lv6pb2

@fastandslow007
Copy link

seems like you have too many request and then get blocked by tiktok server.
have you try using proxy?

@edenhikri
Copy link

I am not sure if this is the issue... sometimes it works and does all the accounts, sometimes it gets stuck on the error... @fastandslow007

@fastandslow007
Copy link

fastandslow007 commented Sep 16, 2020

First, try to debug:

..
TikTokApi(debug=True)
..

Then enable dumpio on launch:

<yourenv>/lib/python3.6/site-packages/pyppeteer/launcher.py:
..
 81         self.dumpio = options.get('dumpio', True)
..

Run your script and notice the error. In my case, I got this error:

...
Class initialized
<xx>/local-chromium/588429/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
The following error occurred, but it was ignored.
'browser' object has no attribute 'timezone_name'
<xx>/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
...
[ERROR]   ERROR-2 'browser' object has no attribute 'verifyFp'
...

Try to fix missing libXss.so.1 by installing this (I use Ubuntu):

$ apt-get install libxss1

Then the problem is fixed.

Thanks.

@edenhikri
Copy link

edenhikri commented Sep 16, 2020

I have tried this...

I first enabled debug mode

api = TikTokApi(debug=True)

then I went into /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyppeteer/launcher.py
and changed line 81:

self.dumpio = options.get('dumpio', True)

then I ran snowball.py (my script)

It ran everything properly until it got stuck and brought up the same error:

...
DevTools listening on ws://127.0.0.1:53029/devtools/browser/28433110-68c9-4304-875e-5494698a533d
[0916/130613.905933:INFO:CONSOLE(1)] "%c", source:  (1)
Traceback (most recent call last):
  File "snowball.py", line 22, in <module>
    tiktok = api.getUser(accounts, proxy=None)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

@fastandslow007
Copy link

Is it okay if you share the full log from the start?

@edenhikri
Copy link

edenhikri commented Sep 16, 2020

This is what happens when I run snowball.py (python3 snowball.py) with debug mode set to True and dumpio enabled on launch:

(as it is lengthy I have put it in this link for you to view)

https://pastr.io/view/tuOfEKsXxly

I'm really not sure what the issue could be...

@edenhikri
Copy link

edenhikri commented Sep 16, 2020

I discovered the issue may have been with google-api-core interfering with requests.

I simple fixed it by:

pip3 uninstall requests

then:

pip3 uninstall google-api-core

finally:

pip3 install requests

@edenhikri
Copy link

Unfortunately, this did not actually fix the issue. It seemed to only have fixed the issue for a few hours... I am really not sure what is causing this issue. Can you please help me out @davidteather

@davidteather
Copy link
Owner

I’ve got no clue what your issue is. You could try to make a VM for a fresh start. The .travis.yml file has specific setup commands

@edenhikri
Copy link

edenhikri commented Sep 18, 2020

Those instructions are linux specific... are you able to provide Mac instructions? @davidteather

@edenhikri
Copy link

I am really unsure what the issue may be... I have tried installing a new virtual environment, running it with debug mode set to True and dumpio enabled on launch. Nothing seems to work. I would love to use this program however it does not work for me

@davidteather
Copy link
Owner

@edenhikri might be an issue with your actual IP address might be blocked by TikTok. When I used heroku it didn't like how they had their IPs setup. When I had a dedicated IP on a AWS ec2 instance it worked. You might want to try making the requests over a proxy (most publically available free ones probably wont work)

@edenhikri
Copy link

edenhikri commented Sep 20, 2020

@davidteather So I tried using a private proxy that I bought. It is based in United States and I ran the script in debug mode in a virtual environment with the proxy and I still got the same error: (I even tried running with dumpio set to True on launch and got the same error)

  File "pinpoint.py", line 164, in pullandsort
    description()
  File "pinpoint.py", line 80, in description
    tiktok = api.getUser(name, proxy=myproxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pinpoint.py", line 231, in <module>
    startup()
  File "pinpoint.py", line 227, in startup
    locate()
  File "pinpoint.py", line 49, in locate
    sort()
  File "pinpoint.py", line 71, in sort
    pullandsort()
  File "pinpoint.py", line 167, in pullandsort
    description()
  File "pinpoint.py", line 80, in description
    tiktok = api.getUser(name, proxy=myproxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

@edenhikri
Copy link

Is there anything else I can try? @davidteather

@fastandslow007
Copy link

fastandslow007 commented Sep 22, 2020 via email

@fastandslow007
Copy link

fastandslow007 commented Sep 22, 2020 via email

@AlexB51
Copy link

AlexB51 commented Sep 22, 2020

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:

from TikTokApi.browser import set_async
set_async()

Good luck, and let me know!

@lo-fo
Copy link

lo-fo commented Sep 25, 2020

same issue here.

virtualenv -p python3.8 tiktok_api_test
cd tiktok_api_test
source bin/activate
pip install TikTokApi

I dump the example code into test.py

python test.py

here is what i get

[W:pyppeteer.chromium_downloader] start chromium download. Download may take a few minutes. [W:pyppeteer.chromium_downloader] start chromium download. Download may take a few minutes. Traceback (most recent call last): File "test.py", line 7, in <module> trending = api.trending(count=results) File "/private/tmp/tiktok_api_test/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 154, in trending res = self.getData(b, proxy=proxy) File "/private/tmp/tiktok_api_test/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 72, in getData query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature} AttributeError: 'browser' object has no attribute 'verifyFp'

running chromedriver in the terminal outputs this

Starting ChromeDriver 85.0.4183.87 (cd6713ebf92fa1cacc0f1a598df280093af0c5d7-refs/branch-heads/4183@{#1689}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.

@Danielohayon
Copy link

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:

from TikTokApi.browser import set_async
set_async()

Good luck, and let me know!

I had the same problem and this solved it.
Thanks!

@vasemkin
Copy link

vasemkin commented Oct 5, 2020

i encountered the same issue.
simply running pyppeteer-install was the solution for me.

@hanqingguo
Copy link

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:
from TikTokApi.browser import set_async
set_async()
Good luck, and let me know!

I had the same problem and this solved it.
Thanks!

Same issue and solved by this!

@Incher25
Copy link

Incher25 commented Oct 6, 2020

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:

from TikTokApi.browser import set_async
set_async()

Good luck, and let me know!

I have the same issue with "verifyFp" but after adding set_async() I just have anorher error:

Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/lib/python3.6/asyncio/base_events.py", line 454, in run_until_complete
self.run_forever()
File "/usr/lib/python3.6/asyncio/base_events.py", line 408, in run_forever
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

@WinkyDev
Copy link

WinkyDev commented Oct 8, 2020

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:
from TikTokApi.browser import set_async
set_async()
Good luck, and let me know!

I have the same issue with "verifyFp" but after adding set_async() I just have anorher error:

Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/lib/python3.6/asyncio/base_events.py", line 454, in run_until_complete
self.run_forever()
File "/usr/lib/python3.6/asyncio/base_events.py", line 408, in run_forever
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

Same error here

@gopida
Copy link

gopida commented Oct 9, 2020

I had the same issue after deploying it to my raspberry pi, whereas it is working perfectly in windows.
Looks like the issue is with the pyppeteer browser. Did not investigate it completely, but the below fixed the issue.

Fix

pass the below argument while creating TikTokApi() object
executablePath = '/usr/bin/chromium-browser'

Command to find the path - "whereis chromium-browser"

Alternative:
Or directly hardcode the browser path in site-packages/TikTokApi/browser.py (wouldn't recommend, but can give a try if the 1st doesn't work)
self.executablePath = '/usr/bin/chromium-browser'

Hopefully, this works in Linux as well.

@izuzyun
Copy link

izuzyun commented Oct 22, 2020

I've tried all of your recommendations, but the problem remained unresolved
Here's the code with all libraries:
`from TikTokApi import TikTokApi
from TikTokApi.browser import set_async
set_async()
api = TikTokApi()

results = 10

trending = api.trending(count=results)

for tiktok in trending:
# Prints the text of the tiktok
print(tiktok['desc'])

print(len(trending))And here's some errors:[W:pyppeteer.chromium_downloader] start chromium download.
Download may take a few minutes.
Traceback (most recent call last):
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)

During handling of the above exception, another exception occurred:
`
How can I solve it on MacOS?

@gopida
Copy link

gopida commented Oct 24, 2020

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]
The issue you are facing seem to be different than the one discussed in this thread. See this for possible solution for ssl issue.

sarahlc888 added a commit to sarahlc888/whichtok that referenced this issue Oct 30, 2020
stable version of UserGroup that scrapes and stores user information in preparation for graph assembly
note that davidteather/TikTok-Api#237 arises when group size is ~50, which will need to be addressed in the future

Merge branch 'develop' into main
@davidteather
Copy link
Owner

Since I've migrated the API to playwright information here may be outdated for TikTokApi >= 3.7.0 if anyone has the same issues on 3.7.0 or greater please open a new issue.

@viniciusao
Copy link

What happens when you type the following command into your terminal

chromedriver

I was getting an error that TikTokApi didn't have an attribute (width). When I saw your post, it enlighted me. I didn't know I should had started chromedriver x)! Thanks, mate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests